在 Windows 命令行中用一行执行多个命令?

在 Windows 命令行中用一行执行多个命令?

如何仅用一行在 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完成之前,那么您需要/wstart命令中添加开关:

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,则可以使用;加入命令。

相关内容