我正在尝试在BAT文件中打开一个新的命令窗口:

start %windir%\system32\cmd.exe

打开后,我想在新窗口中执行BAT命令:

echo "test in new window"

我该怎么做呢?


当前回答

在批处理文件中使用以下命令:

start cmd.exe /c "more-batch-commands-here"

or

start cmd.exe /k "more-batch-commands-here"

/c执行命令 由字符串指定,然后 终止 /k执行 由字符串but指定的命令 仍然是

使用cmd /?查看cmd.exe文档欲知详情。

当使用带空格的参数时,命令字符串的正确格式变得更加复杂。请看下面的例子。注意一些例子中嵌套的双引号。

例子:

运行一个程序并传递一个filename参数: CMD /c write.exe c:\docs\sample.txt

运行一个程序并传递一个长文件名: CMD /c write.exe "c:\sample documents\sample.txt"

程序路径中的空格: CMD /c "c:\Program Files\Microsoft Office\Office\Winword.exe""

程序路径+参数中的空格: CMD /c ""c:\程序文件\演示。cmd"" Parameter1 Param2 . CMD /k ""c:\batch files\demo. "cmd" "参数1包含空格""参数2包含空格""

启动demo1和demo2: CMD /c ""c:\程序文件\demo1。c:\Program Files\demo2.cmd

来源:http://ss64.com/nt/cmd.html

其他回答

你可能已经找到答案了,因为你是在一段时间前问的。但我在编写ror代码时也尝试了类似的方法。我想在一个新的cmd窗口中运行“rails服务器”,这样我就不必打开一个新的cmd,然后再次找到我的路径。

我发现像这样使用K开关:

start cmd /k echo Hello, World!

start before "cmd"将在一个新窗口中打开应用程序,"/K"将在新cmd启动后执行"echo Hello, World!"

您还可以使用/C开关进行类似的操作。

start cmd /C pause

这将执行“pause”,但在命令完成时关闭窗口。在这种情况下,你按下按钮。我发现这对“rails服务器”很有用,然后当我关闭我的开发服务器时,我不必关闭窗口。

在一个新的CMD窗口中运行一个python文件,文件名中有空格。

start cmd.exe /k python "C:\Program Files\HelloWorld.py"

我想让我的窗口在我杀死或重新启动Firebase后保持打开,所以我使用了两个批处理文件。

便于访问的桌面文件:run_firebase.bat:

--------------START FILE CONTENTS--------------

start cmd /k C:\dev\init_firebase_batch.bat

---------------END FILE CONTENTS---------------

C:\dev\init_firebase_batch.bat

--------------START FILE CONTENTS--------------

cd C:\dev\aptr_datasync\aperture-customer-hub
firebase emulators:start

---------------END FILE CONTENTS---------------

所以…双击run_firebase.bat,它将运行第二批。在按Ctrl+C退出我的进程后,窗口仍然打开。看似微不足道,但我不喜欢在写代码时分心。

我花时间解是因为我觉得它很简单。希望这能为其他人带来同样的简单。

我认为这验证了最初帖子中的问题:

我正在尝试在BAT文件中打开一个新的命令窗口 [x]打开后,我想在新窗口中执行BAT命令

我需要运行一个环境,然后在该环境中使用python。

如果我的文件夹结构是:

C:\environments>
C:\environments\encrypted_stuff>
C:\environments\encrypted_stuff\p1>
C:\environments\encrypted_stuff\p2>

我想激活“encrypted_stuff”环境,然后从p2调用一个脚本,我可能会在存储在C:\environments\p2.bat中的bat中输入这个脚本

start cmd /k "Scripts\activate && cd p2 && python p2_script.py"

然后我可以有一个bat文件的任何脚本和所有将使用我的“encrypted_stuff”环境。现在我可以从桌面上单击bat文件,它将加载我的特定环境,然后在该环境中运行脚本。

在两个命令之间添加/k将按顺序执行这两个命令。

例子:

cmd /k echo "hello"

该命令将首先打开命令提示符,然后执行echo“hello”命令