Batch file BAT文件:打开新的cmd窗口并在其中执行命令

Batch file BAT文件:打开新的cmd窗口并在其中执行命令,batch-file,command-line,Batch File,Command Line,我试图在BAT文件中打开一个新的命令窗口: start %windir%\system32\cmd.exe 打开后,我想在新窗口中执行BAT命令: echo "test in new window" 如何执行此操作?如果我理解您正确地执行此操作,您的bat文件将打开命令提示符并将消息打印到屏幕上 cmd.exe hello world 希望这有帮助。这并不容易 最好的方法是将希望在“新窗口”中执行的脚本部分放在单独的.bat文件中。如果您需要脚本其余部分的大量状态(变量等),则这可能是不切

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

start %windir%\system32\cmd.exe
打开后,我想在新窗口中执行BAT命令:

echo "test in new window"

如何执行此操作?

如果我理解您正确地执行此操作,您的bat文件将打开命令提示符并将消息打印到屏幕上

cmd.exe hello world
希望这有帮助。

这并不容易

最好的方法是将希望在“新窗口”中执行的脚本部分放在单独的.bat文件中。如果您需要脚本其余部分的大量状态(变量等),则这可能是不切实际的。一个选项是将您需要的任何值(例如,要在其中操作的dir)传递到批处理文件:

start cmd.exe stuff.bat %this_dir%
start cmd.exe /k "more-batch-commands-here"

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

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%"

显然,这是一个微不足道的例子。

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

我发现是这样使用K开关的:

start cmd /k echo Hello, World!
在“cmd”之前启动将在新窗口中打开应用程序,“/K”将在新cmd启动后执行“echo Hello,World!”

您也可以使用/C开关进行类似操作

start cmd /C pause

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

多亏了堆栈溢出;此解决方案解决了上述问题,但扩展为自动运行以下任务:

  • 我想运行rails服务器
  • 为我的延迟工作宝石运行rake jobs:worker
  • 并打开默认的internet浏览器以显示我的页面
  • 最后,要在会话期间打开cmd窗口,以便执行任何额外命令
  • 我想我的项目被称为“AntiCorum”。

    %USERPROFILE%目录中创建一个“init.bat”文件(打开cmd窗口,查看光标左侧的路径,了解%USERPROFILE%是什么)

    在新的命令行窗口中,键入:C:>init antizorum

    代码将打开另外两个cmd窗口和一个浏览器超时避免浏览器中出现错误

    :开始部分完成工作。 您可以分别运行任务1、2或4,方法是键入以下参数:服务器工作者,或无,以便在“AntiCorum”项目的中打开cmd


    享受。

    在批处理文件中使用以下内容:

    start cmd.exe stuff.bat %this_dir%
    
    start cmd.exe /k "more-batch-commands-here"
    

    /c执行命令 由字符串指定,然后 终止
    /k执行 由字符串指定的命令,但 遗骸

    有关详细信息,请使用
    cmd/?
    查阅cmd.exe文档

    命令字符串的正确格式由于参数中的空格而变得更加复杂。请参见下面的示例。请注意,在一些示例中使用了嵌套双引号

    示例:

    运行程序并传递文件名参数:
    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:\Program Files\demo.CMD”参数1参数2

    CMD/k“c:\batch files\demo.CMD”“参数1带空格”“参数2带空格”

    启动演示1和演示2:
    CMD/c“c:\Program Files\demo1.CMD”和“c:\Program Files\demo2.CMD”


    来源:

    上述答案对我很有帮助。但仍然需要一些计算。下面是我用来启动3个web开发过程的示例脚本。这导致3个窗口保持打开状态,因为它们需要连续运行

    Mongo被全局添加到我的路径中,所以我不需要像其他两个程序那样使用cd。当然,文件的路径会有所不同,但希望这会有所帮助

    :: Start MongoDB
    start cmd.exe /k "mongod"
    
    :: cd app directory, and start it
    cd my-app
    start cmd.exe /k "npm run dev"
    
    :: cd to api server, and start that
    cd ../my-app-api
    start cmd.exe /k "npm run dev"
    

    要在文件名中带有空格的新cmd窗口中运行python文件,请执行以下操作:

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

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

    例如:

    cmd /k echo "hello"
    

    此命令将首先打开
    命令提示符
    ,然后执行
    回显“hello”
    命令

    如果您使用此命令运行rails服务器,实际上不需要键入
    cmd
    。您只需键入
    启动rails s