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

start %windir%\system32\cmd.exe

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

echo "test in new window"

我该怎么做呢?


当前回答

我想让我的窗口在我杀死或重新启动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命令

其他回答

感谢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。

享受。

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

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

在一个新的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文件,它将加载我的特定环境,然后在该环境中运行脚本。