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

所有

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

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

并且我在其后input的代码(例如一个打印)应该显示在那里:echo“在新窗口中testing”

我怎样才能做到这一点?

所以我需要做一些新的命令窗口中的编码。 谁可以帮我这个事?

亲切的问候

你可能已经find你的答案,因为前一段时间你问过。 但是我在编码ror时试图做类似的事情。 我想在一个新的cmd窗口中运行“rails server”,所以我不必打开一个新的cmd,然后再次find我的path。

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

start cmd /k echo Hello, World! 

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

你也可以使用/ C开关来做类似的事情。

 start cmd /C pause 

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

在batch file中使用以下内容:

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

要么

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

/ c执行由string指定的命令,然后终止
/ k执行由string指定的命令,但保持不变

请参阅cmd.exe文档使用cmd /? 更多细节。

命令string的正确格式在参数中会有一些复杂的空间。 看下面的例子。 注意在一些例子中使用嵌套的双引号。

例子:

运行一个程序并传递一个文件名参数:
CMD /c write.exe c:\docs\sample.txt

运行一个程序并传递一个长文件名:
CMD /c write.exe "c:\sample documents\sample.txt"

程序path中的空间:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

程序path中的空间+参数:
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

这不是很容易。

最好的办法是让你希望在“新窗口”中执行的脚本部分位于单独的.bat文件中。 这可能是不切实际的,如果你需要从脚本的其余部分(variables等)的很多状态。 一种select是将您需要的任何值(例如,dir操作)传递给batch file:

 start cmd.exe stuff.bat %this_dir% 

如果你有大量的状态传输,你可以考虑在运行时生成一个batch file:

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

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

感谢Stack Overflow的所有内容; 这个解决scheme解决了上述问题,但扩展到自动运行这些任务:

  1. 我想运行我的rails服务器
  2. 运行rake作业:我的delayed_job gem 工作人员
  3. 和打开默认的互联网浏览器来显示我的网页
  4. 最后,在会话期间留下一个cmd窗口来打开任何额外的命令。

我想我的项目被称为“反固定”。

%USERPROFILE%目录中创build一个“init.bat”文件(打开一个cmd窗口并查看光标左侧的path,以了解%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 

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

该代码打开了两个cmd窗口和一个浏览器。 TIMEOUT避免浏览器中的错误。

:开始部分的工作。 您可以通过inputparams来分别运行任务1,2或4: serverworker或none,在“antiquorum”项目的根目录中打开一个cmd。

请享用。

如果我理解你正确地做到这一点,你的蝙蝠文件将打开命令提示符并将您的消息打印到屏幕上。

 cmd.exe hello world 

希望这可以帮助。

上面的答案帮助了我。 但仍然需要一些搞清楚。 以下是我用来启动3个Web开发过程的示例脚本。 它导致3个窗口保持打开,因为它们需要连续运行。

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

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