【问题标题】:Continue to run a batch file in a new console继续在新控制台中运行批处理文件
【发布时间】:2017-05-16 23:21:30
【问题描述】:

有什么方法可以让您继续在新控制台中运行批处理脚本。我有一个大型批处理脚本,我希望它能够生成附加到新控制台的 cmd shell。那些 cmd 实例会继续运行脚本,脚本的另一部分,或者显示数据;不要紧。主脚本也应该保持打开状态,因此如果需要,我可以再次重新运行命令。

【问题讨论】:

  • 如果你在新的 shell 命令前使用 call ,那么批处理文件将继续运行: call cmd another.bat
  • 这就是我不想调用另一个 .bat 文件的原因。我希望 main 一个创建新的 cmd 窗口并继续在新窗口中运行脚本。
  • start 在新控制台(不是 cmd 窗口)中打开控制台程序,例如 cmd.exe,无需等待它退出。
  • 您无法在新窗口中继续批处理文件...

标签: windows batch-file cmd windows-console


【解决方案1】:

当您需要这种行为时,通用的解决方法是老式的 goto。 (您使用的是恐龙时代的语言,所以有时您需要恐龙时代的工具。)

在批处理文件的第一行,

@if "%1" == "/goto" goto :%2

当您想要启动批处理文件的单独实例时,从特定标签开始,

start cmd /c "%0" /goto mylabel

一个完整的例子:

if "%1" == "/goto" goto :%2

echo Hello!

start cmd /c "%0" /goto mylabel

echo Goodbye!

goto :eof

:mylabel

echo Hello!

pause

【讨论】:

  • 数据可以在命令行、环境变量、临时文件或注册表项中传递。动作可以与waitfor.exe同步,它基于很少使用的Mailslots
  • 不幸的是,匿名管道将无法工作,因为创建新控制台会重置标准句柄值。该进程将继承管道句柄,但将无法使用它。
猜你喜欢
  • 2021-03-24
  • 1970-01-01
  • 2021-01-09
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2017-09-18
  • 2023-04-01
相关资源
最近更新 更多