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

start %windir%\system32\cmd.exe

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

echo "test in new window"

我该怎么做呢?


当前回答

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

例子:

cmd /k echo "hello"

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

其他回答

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

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

这并不容易。

最好的方法是将希望在“新窗口”中执行的脚本部分放在单独的.bat文件中。这可能是不切实际的,例如,你需要从你的脚本的其他部分(变量等)很多状态。一种选择是将你需要的任何值(例如dir)传递给批处理文件:

start cmd.exe stuff.bat %this_dir%

如果你有大量的状态要传输,你可以考虑在运行时生成一个批处理文件:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo

del /q /f "%tmp%"

echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"

start cmd.exe "%tmp%"

del /q /f "%tmp%"

显然这是一个简单的例子。

如果我正确理解你这样做在一边你的bat文件将打开命令提示符和打印你的消息到屏幕上。

cmd.exe hello world

希望这能有所帮助。

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

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

扩展来自@Dan Zuzevich的回答。如果你的目标文件在不同的驱动器上,下面是CD“更改目录”。例如,它必须从C盘和D盘调用文件。

:: Start MongoDB
start cmd.exe /k "mongod"

:: cd app directory, and start it
cd C:\project\dev
C:
start cmd.exe /k "npm run dev"

:: cd to api server, and start that
cd D:\api\server
D:
start cmd.exe /k "npm run dev"