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解决了上述问题,但扩展到自动运行这些任务:
- 我想运行我的rails服务器
- 运行rake作业:我的delayed_job gem 工作人员
- 和打开默认的互联网浏览器来显示我的网页
- 最后,在会话期间留下一个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: server , worker或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"