T. *_*one 77 windows command-line
如何仅用一行在 Windows 命令行中执行多个命令?
例如,假设我想执行 SVN 更新,然后将所有文件复制到另一个位置...
svn update; copy *.* c:\development\copy\
Run Code Online (Sandbox Code Playgroud)
那显然行不通。是否有像“;”这样的字符或分隔符 执行这样的事情?
Pho*_*shi 118
就在这里。它是&。
&& 如果命令 1 没有失败,将在命令 1 完成时执行命令 2。
& 无论如何都会执行。
如果你想用 1 行执行多个命令start,例如,如果你想执行这样的命令:
start "" netsh dump && pause
Run Code Online (Sandbox Code Playgroud)
然后,您需要分 2 步完成(单行解决方案在此答案的末尾)。
首先,将命令写入临时批处理文件(在这种情况下,您可以使用&或&&):
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd
Run Code Online (Sandbox Code Playgroud)
请注意,您需要使用 a 来“转义”每个"&"s(&符号),"^"
以允许它们在echo命令中被视为普通字符。或者,您可以使用文本编辑器(例如记事本)创建临时批处理文件。
然后,使用start启动批处理文件:
start "" foobar.cmd
-or-
start "" "temporary foobar.cmd"
Run Code Online (Sandbox Code Playgroud)
注意:空双引号
"Title"表示将显示在start将打开的命令窗口的标题栏中。从"Title"技术上讲,此参数是 的可选参数start,但如果要运行的命令是双引号,则它实际上是必需的start。例如,在第二个例子中:
start "" "temporary foobar.cmd"如果你像这样省略一对空的双引号:
start "temporary foobar.cmd"然后
start将打开一个新的命令窗口,并"temporary foobar.cmd"用作新的命令窗口"Title",在新的命令窗口中不会执行任何操作。)
如果你想start等待批处理文件完成(在pause被解雇之后),在start完成之前,那么你需要/w在start命令中添加开关:
start "" /w foobar.cmd
Run Code Online (Sandbox Code Playgroud)
您可以将所有这些放在一行中,甚至可以移除(删除)临时批处理文件 ( foobar.cmd):
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd
Run Code Online (Sandbox Code Playgroud)
请注意,如果您要删除临时批处理文件,则需要start使用/w开关运行,否则,临时批处理文件可能会在它有机会运行之前被删除。
| 归档时间: |
|
| 查看次数: |
187281 次 |
| 最近记录: |