BAT文件:打开新的cmd窗口并在其中输入代码

时间:2012-02-22 10:18:22

标签: command-line batch-file new-operator

所有

我正在尝试使用.BAT文件,它应该是一个非常简单的脚本,但我不知道该怎么做(我不熟悉它)。

我要做的是打开一个新的命令窗口: 启动%windir%\ system32 \ cmd.exe

我在其后面键入的代码(例如打印)应该显示在那里: echo“在新窗口中测试”

我该怎么做?

所以我需要在新的命令窗口中进行一些编码。任何人都可以帮我吗?

亲切的问候

9 个答案:

答案 0 :(得分:216)

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

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

start cmd /k echo Hello, World!

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

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

start cmd /C pause

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

答案 1 :(得分:69)

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

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

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

/ c执行命令   由string指定然后   终止
  / k执行   命令由string指定但是   遗体

有关详细信息,请参阅使用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"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

启动demo1和demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

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

答案 2 :(得分:11)

这不是很容易。

最好的方法是让您希望在“新窗口”中执行的脚本部分位于单独的.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%"

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

答案 3 :(得分:5)

感谢Stack Overflow中的所有内容;此解决方案解决了上述问题,但扩展为自动运行这些任务:

  1. 我想运行 rails服务器
  2. 为我的delayed_job gem运行 rake jobs:worker
  3. 并打开默认互联网浏览器显示我的页面
  4. 最后,保留 cmd窗口,以便在我的会话期间为任何额外命令打开。
  5. 我想我的项目名为" antiquorum。"

    %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 可避免浏览器出错。

    :开始部分完成工作。 您可以通过键入params来分别运行任务1,2或4:服务器工作人员,或者无以在 root 中打开cmd " antiquorum" 项目。

    享受。

答案 4 :(得分:5)

以上答案对我有帮助。但仍需要一些搞清楚。这是一个用于启动Web开发的3个进程的示例脚本。它导致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"

答案 5 :(得分:2)

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

cmd.exe hello world

希望这会有所帮助。

答案 6 :(得分:1)

在新的cmd窗口中运行python文件,文件名中带有空格:

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

答案 7 :(得分:0)

添加 /k 两个命令之间 执行两个命令in order 。< / p>

示例:

cmd /k echo "hello"

此命令将首先打开command prompt,然后执行echo "hello"命令

答案 8 :(得分:0)

我希望我的窗口在我杀死或重新启动 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 退出我的进程后,窗口保持打开状态。看起来微不足道,但我不喜欢在编写代码时分心。

我只是花时间解决,因为我认为这很简单。希望这为其他人创造了这种简单性。

我认为这会检查最初帖子中的问题:

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