在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%运行第一条命令,如果失败运行第二条命令
见 这里 。