我正在尝试在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

其他回答

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

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

感谢Stack Overflow的所有人;这个解决方案解决了上面的问题,但被扩展为自动运行这些任务:

我想运行我的rails服务器 为我的delayed_job gem运行一个rake jobs:worker 和打开默认的互联网浏览器显示我的页面 最后,在会话期间为任何额外命令打开CMD窗口。

我想我的项目叫做“反古伦”。

在你的%USERPROFILE%目录中创建一个“init.bat”文件(打开一个cmd窗口,看看光标左边的路径,知道%USERPROFILE%是什么)

@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
    start cmd /k %USERPROFILE%\init.bat worker
    start cmd /k %USERPROFILE%\init.bat server
    TIMEOUT 30
    start "" "http://localhost:3000/"
    GOTO end
:server
    rails s
    GOTO end
:worker
    rake jobs:work
:end

在新的命令行窗口中输入:C:> init antiquorum

这段代码打开了另外两个cmd窗口和一个浏览器。TIMEOUT可以避免浏览器中的错误。

:start部分完成这项工作。 您可以通过输入参数as: server, worker或none来分别运行任务1,2或4,以在“antiquorum”项目的根目录下打开cmd。

享受。

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

cmd.exe hello world

希望这能有所帮助。

扩展来自@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"

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

例子:

cmd /k echo "hello"

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