我知道如何创建 cmd.exe 的快捷方式并将起始位置设置为我的目标目录。但我希望快捷方式在控制台窗口中运行应用程序...基本上,我的应用程序在没有命令的情况下运行会打印一条欢迎消息,指导用户如何启动它。然后用户就可以像往常一样与此命令提示符进行交互。
所以我想要一个快捷方式:
- 在给定文件夹中打开命令提示符
- 运行该文件夹中的指定程序
- 之后保持命令提示符打开,以便我进行交互
这可能吗?
答案1
你可以使用这个:
cmd.exe /k "cd /d "Filepath" & start program.exe"
/k
开关告诉在命令执行后保持命令提示符打开。cd
将目录更改为文件路径,/d
开关使其更安全,因为如果没有此开关,则无法更改驱动路径。- 然后启动该程序。
您可以创建快捷方式。右键单击桌面 > 新建 > 快捷方式。然后将代码放在那里并命名。您也可以将其放在批处理文件中。
顺便一提
受到@spikey_richie 想法的启发:
@echo off & cd /d "Filepath" & start program.exe & pause >nul
如果您不想保持命令提示符打开,而是等待终止或按键。
答案2
我认为你要的是.bat
批处理文件中的类似内容
创建一个名为 的新文件shortcut.bat
。在文件中创建以下内容:
cd c:\path to file\
Start program.exe
pause
当您运行时,shortcut.bat
它将启动一个命令窗口,启动您的程序并保持命令窗口打开。
答案3
假设你的可执行文件是一个控制台application
,你不需要start
:
%comspec% /k "cd /d "c:\Python27" && python.exe"
rem :: or..
%comspec% /k "pushd "c:\Python27" && python.exe"
rem :: or, with arguments
%comspec% /k "pushd "c:\Python27" && "python.exe" args[0] args[1] ... args[n]"
1.cmd.exe
使用一个系统变量启动解释器:
%comspec% ...
rem :: is the same command ::
C:\Windows\system32\cmd.exe ...
2.调用命令解释器时,指示它保持/keep
打开状态cmd.exe
,而不是在完成“command passed
“。
%comspec% /k command...
rem :: is the same command ::
C:\Windows\system32\cmd.exe /k command...
3.使用检查目录命令将目标目录用作工作目录cd directory
。
... "cd /d "c:\Python27"
4. 默认情况下,命令行解释器 (cmd.exe) 将假定%windir%\system32\
为工作目录,通过添加cd
或pushd
,您可以根据需要定义工作目录
cd/D“c:\Python27”…
5.使用/D
切换至你的cd traget_folder
以确保它在被调用时也会改变驱动器。
...cd /D "c:\Python27" ....
6.使用"
引号"
将文件夹路径传递给命令时cd
,潜在地防止任何与其名称中包含任何特殊字符甚至空格的文件夹相关的错误事件。
...cd /D "c:\Python27" ....
7.使用&&
操作符,这将在路径错误、已更改等情况下对可能需要的任何更正做出响应,同时也避免了执行后续命令时也会返回错误,因此,它只会返回错误并继续执行而不执行,以便在必要时或更改路径时进行任何将来的更正
...cd /D "c:\Python27" && python.exe"
8.如果前一次执行成功(没有错误,与 相同return 0
)。操作员将继续执行下一个command
,从 开始python.exe
,并且由于这是一个控制台应用程序,界面将保留在同一个窗口中,并使用假定的目录作为先前发出信号的文件夹的工作目录,直到用户完成此执行,如果发生这种情况,python 界面控制台结束,解释器 cmd.exe 保持打开状态(/keep
)并位于同一个工作文件夹中。
cmd /K Carries out the command specified by string but remains
%comspec% /K "cd /D "c:\Python27" && "python.exe""
9.由于我们调用命令解释器并传递多个命令,因此建议告知/定义这将被限制在一个块内,我们通过在双引号之间分隔/定义来做到这一点,因为我们使用单行:
interpreter "command operator command"
%comspec% /K "cd /D "c:\Python27" && "python.exe""
10.假设您想要/需要通过在命令中指向 UNC 文件夹路径来使用此快捷方式,您将需要使用某种兼容的方式进入并保留在指向的驱动器/文件夹中,在这种情况下,使用 pushd,但也可以适用于常规驱动器/路径。
%comspec% /K "pushd "c:\Python27" ..."
%comspec% /K "pushd "\\Installler\Python27" ..."
观察:如果你使用pushd
,也使用popd
命令返回一个文件夹,该文件夹先前被假定为您想要的工作目录,并且已经删除了初始临时创建的驱动器pushd
执行。
顺便一提
受到@Wasif_Hasan 想法的启发:
这是受到@spikey_richie 想法的启发:
进一步阅读: