2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

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

如何在Windows命令行中只用一行就能执行多个命令?

例如我想执行SVN更新,然后将所有文件复制到另一个位置…

svn update; copy *.* c:\development\copy\

这显然是行不通的。有没有像’;‘这样的字符或分隔符来执行这样的操作?

答案 (6)

107
107
107
2009-10-30 00:24:41 +0000

是的,有。是&。

&&会在命令1完成时执行命令2,如果它没有失败的话。

&无论如何都会执行。

4
4
4
2014-02-12 06:33:03 +0000

如果你想用1行执行多个命令,其中你是以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"参数从技术上讲是startoptional参数,但实际上它是required ,如果start将运行的命令是双引号的话。例如,在第二个例子中:

start "" "temporary foobar.cmd"

如果你像这样省去一对空的双引号。

start "temporary foobar.cmd"

那么start将打开一个新的命令窗口,并使用"temporary foobar.cmd"作为新的命令窗口"Title"nothing将在新的命令窗口中执行)。)

如果你想让startpause完成之前,等待批处理文件完成(在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开关,否则,临时批处理文件很可能在运行之前就被删除了。

4
4
4
2009-11-16 07:41:51 +0000

至少在MS-DOS 6.22中,我曾经用Ctrl+T键得到一种段落符号。这和Phoshi提到的&的工作原理一样。不过,这只有在你运行了doskey.exe的情况下才会有效。

0
0
0
2018-07-12 07:51:31 +0000

使用&

%command1% & %command2%同时运行两条命令

%command1% && %command2%运行第一条命令,如果成功运行第二条命令

%command1% || %command2%运行第一条命令,如果失败运行第二条命令

这里

-1
-1
-1
2016-12-07 17:03:12 +0000

我发现使用 “START "固定了多个命令的工作(我运行的是Windows 10 Home)。例如:

START chrome.exe "page.web.com" & timeout 20
``` 。
-2
-2
-2
2014-10-21 05:01:24 +0000

制作一个批处理文件,名字要简短,即bat.bat

add cmd /c %1 
    cmd /c %2 
rem

以此类推到9行并保存

然后用双引号

bat "command one" "command two" "command three"

cmd /c 将运行每条命令并关闭下一行,并不是说这比&&更好,只是说这很简单。