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

start %windir%\system32\cmd.exe

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

echo "test in new window"

我该怎么做呢?


当前回答

这并不容易。

最好的方法是将希望在“新窗口”中执行的脚本部分放在单独的.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文件中。这可能是不切实际的,例如,你需要从你的脚本的其他部分(变量等)很多状态。一种选择是将你需要的任何值(例如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

希望这能有所帮助。

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

我发现像这样使用K开关:

start cmd /k echo Hello, World!

start before "cmd"将在一个新窗口中打开应用程序,"/K"将在新cmd启动后执行"echo Hello, World!"

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

start cmd /C pause

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

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

例子:

cmd /k echo "hello"

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

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