Gre*_*ire 2 windows command-line cmd batch-file
我的目标是能够在单个 cmd 行中链接 START 命令。
假设我有一个 cmd 窗口(我们称之为 starter)。用一行,我想启动一个新的 cmd 窗口(我们称之为 cmd1),它将回显 1 并启动另一个 cmd 窗口(我们称之为 cmd2),在 cmd1 调用 cmd2(没有等待它完成)它也会等待(暂停),在启动器调用 cmd1 之后(不等待它完成)它将关闭(或什么都不做)
最后,我应该得到 2 个 cmd 窗口(cmd1 打印“1”,cmd2 打印 2)并且都在等待 ENTER。
运行方案:
--- Starter
+--- Start cmd1 (Non-blocking)
| +--- Start cmd2 (Non-blocking)
| | +--- Echo 2
| | \--- Pause (Blocking cmd2)
| +--- Echo 1
| \--- Pause (Blocking cmd1)
\---Do nothing (Starter, Incase running from bat file starter will exit)
Run Code Online (Sandbox Code Playgroud)
我在 bat 文件中写了这个 cmd 行:
title starter
start cmd.exe /c start cmd.exe /c "echo 2 & pause" & echo 1 & pause
\----------cmd2-----------/
\---------------------------cmd1----------------------------/
Run Code Online (Sandbox Code Playgroud)
(“标题启动器”只是为了了解打开了哪个窗口,不应包含在最后一行中)
使用该 cmd 行,starter 是打印 2 并等待的那个,而 cmd1 在调用 cmd2 后才退出。
该线路的运行方案:
--- Starter
+--- Start cmd1 (Non-blocking)
| \--- Start cmd2 (Non-blocking)
| +--- Echo 2
| \--- Pause (Blocking cmd2)
+--- Echo 1
+--- Pause (Blocking Starter)
\---Do nothing (Starter, Incase running from bat file starter will exit)
Run Code Online (Sandbox Code Playgroud)
我尝试了这条线的一些其他变体,但没有成功。
title starter
start "cmd.exe /c start cmd.exe /c "echo 2 & pause" & echo 1 & pause"
start cmd.exe /c "start cmd.exe /c "echo 2 & pause" & echo 1 & pause"
start cmd.exe /c "start cmd.exe /c ""echo 2 & pause"" & echo 1 & pause"
Run Code Online (Sandbox Code Playgroud)
(重要的是要注意,我可以从第一个 cmd(启动器)打开 2 个 cmds(cmd1、cmd2),其结果将是我想要的运行方案的最终结果,但重要的是 cmd1 将是那个创建 cmd2)
那么,有谁知道我如何实现我想要的运行方案?
我希望,我理解你的要求是正确的......
title Starter
start "one" cmd.exe /c "start "two" cmd.exe /c "echo 2 ^& pause" & echo 1 &pause"
Run Code Online (Sandbox Code Playgroud)
诀窍是正确转义&通过解析的第一遍传递,然后在第二步解析。
我为所有窗口添加了标题。
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |