在Windows命令行中用1行执行多个命令?
如何在Windows命令行中只用一行就能执行多个命令?
例如我想执行SVN更新,然后将所有文件复制到另一个位置…
svn update; copy *.* c:\development\copy\
这显然是行不通的。有没有像’;‘这样的字符或分隔符来执行这样的操作?
如何在Windows命令行中只用一行就能执行多个命令?
例如我想执行SVN更新,然后将所有文件复制到另一个位置…
svn update; copy *.* c:\development\copy\
这显然是行不通的。有没有像’;‘这样的字符或分隔符来执行这样的操作?
如果你想用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"
参数从技术上讲是start
的optional参数,但实际上它是required ,如果start
将运行的命令是双引号的话。例如,在第二个例子中:
start "" "temporary foobar.cmd"
如果你像这样省去一对空的双引号。
start "temporary foobar.cmd"
那么
start
将打开一个新的命令窗口,并使用"temporary foobar.cmd"
作为新的命令窗口"Title"
,nothing将在新的命令窗口中执行)。)
如果你想让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
开关,否则,临时批处理文件很可能在运行之前就被删除了。
至少在MS-DOS 6.22中,我曾经用Ctrl+T键得到一种段落符号。这和Phoshi提到的&的工作原理一样。不过,这只有在你运行了doskey.exe的情况下才会有效。
是使用&
!
%command1% & %command2%
同时运行两条命令
%command1% && %command2%
运行第一条命令,如果成功运行第二条命令
%command1% || %command2%
运行第一条命令,如果失败运行第二条命令
见 这里 。