如何仅用一行在 Windows 命令行中执行多个命令?
例如假设我想执行 SVN 更新,然后将所有文件复制到另一个位置...
svn update; copy *.* c:\development\copy\
这显然行不通。是否有像“;”这样的字符或分隔符可以执行此类操作?
答案1
是的,有。它是&。
&&
如果命令 1 没有失败,则当命令 1 完成时将执行命令 2。
&
无论如何都会执行。
答案2
如果您想用一行执行多个命令,并以 开头start
,例如,如果您想执行如下命令:
start "" netsh dump && pause
然后,您需要分两步完成(一行解决方案位于此答案的末尾)。
首先,将命令写入临时批处理文件(在这种情况下,您可以使用&
或&&
):
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd
请注意,您需要使用“转义”每个"&"s
“&”符号,以便"^"
它们在命令中被视为普通字符echo
。或者,您可以使用文本编辑器(例如记事本)创建临时批处理文件。
然后,使用start
启动批处理文件:
start "" foobar.cmd
-or-
start "" "temporary foobar.cmd"
笔记:空的双引号表示
"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
您可以将所有这些放在一行上,甚至可以移除(删除)临时批处理文件(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
请注意,如果要删除临时批处理文件,则需要start
使用开关运行/w
,否则,临时批处理文件可能会在运行之前被删除。
答案3
至少在 MS-DOS 6.22 中,我曾经使用Ctrl+键T来获取一种段落符号。这就像&Phoshi 提到的一样。但是,这只有在您运行 doskey.exe 时才有效。
答案4
如果您使用 powershell,则可以使用;
加入命令。