使用Windows批处理文件的单行多命令

几个月

我试图了解批处理文件中单个命令行中的多个命令是如何工作的。

dir & md folder1 & rename folder1 mainfolder

和其他情况类似的命令,但&用代替&&

dir && md folder1 && rename folder1 mainfolder

1.这两种情况有什么区别?


我想问的另一件事:

单线batch.bat

dir & md folder1 & rename folder1 mainfolder

多线batch.bat

dir
md folder1
rename folder1 mainfolder

2.就批处理程序而言,这种单线和多线是否相等?


我想知道的一件事:

3.如果我从main.bat调用其他批处理文件,它们是否独立且同时运行?主批处理文件不等待其他批处理文件中的结束程序吗?怎么做?

莫菲

&在两个命令之间执行仅会导致独立于第一个命令的结果执行两个命令。命令的右&执行是在命令的左执行&完成后执行的,与上一个命令的成功或错误无关,即与上一个命令的退出/返回值无关。

&&导致有条件地执行第二条命令。仅当第一个命令成功执行(即以返回码0退出)后,第二个命令才会执行。

有关替代解释,请参见条件执行

dir & md folder1 & rename folder1 mainfolder

因此等于

dir
md folder1
rename folder1 mainfolder

多行替代

dir && md folder1 && rename folder1 mainfolder

将会

dir
if not errorlevel 1 (
   md folder1
   if not errorlevel 1 (
      rename folder1 mainfolder
   )
)

if not errorlevel 1指命令之前并没有与退出代码终止0大由于命令dirmd从未与负值的出口,只是0或更大(因为几乎所有的命令和控制台应用程序)和值为0是成功的退出代码,这是一个正确的方法来测试的成功执行dirmd请参阅Microsoft支持文章“测试批处理文件中的特定错误级别”

有关错误级别的其他有用的堆栈溢出主题:

必须注意混合使用无条件运算符&和有条件运算符,例如&&||由于执行顺序不一定是命令行上命令的顺序。

例:

dir "C:\Users\%UserName%" /AD 2>nul || dir "%UserProfile%" /AD & echo User profile path: "%UserProfile%"

该命令行执行为:

dir "C:\Users\%UserName%" /AD 2>nul
if errorlevel 1 dir "%UserProfile%" /AD
echo User profile path: "%UserProfile%"

ECHO指令总是执行独立于第一执行的结果DIR而第二DIR如果第一只执行DIR或不是一个文件夹中的:失败就像在Windows XP或用户的配置文件夹不上驱动器CUsers的。

仅当第二个DIR之后的第一个DIR失败而与第二个DIR的结果无关时,需要使用ECHO()执行ECHO

dir "C:\Users\%UserName%" /AD 2>nul || ( dir "%UserProfile%" /AD & echo User profile path: "%UserProfile%" )

该命令行执行为:

dir "C:\Users\%UserName%" /AD 2>nul
if errorlevel 1 (
    dir "%UserProfile%" /AD
    echo User profile path: "%UserProfile%"
)

有关第三个问题的答案,请参阅我关于如何在当前批处理文件的父文件夹中调用批处理文件的答案在这里,我已经说明了使用命令运行批处理文件的区别,call或者使用批处理文件中start的这两个命令或不使用这两个命令运行批处理文件的区别

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用批处理文件运行多个 Windows 命令

使用“批处理”命令运行批处理文件

使用批处理文件执行多个命令并使用批处理文件安装MySQL

如何从批处理文件中使用 Runas 命令运行批处理文件

如何使用批处理文件将多个命令插入批处理文件

为什么批处理文件中使用的START命令不能启动批处理文件?

使用Windows批处理文件读取文件内容并执行命令

异步运行Windows批处理文件命令

在 Windows 批处理文件中运行 sbt 命令

Windows批处理文件,用于逐步运行命令

在Windows命令行中在批处理文件中使用参数

如何使用PuTTY / Plink在Windows批处理文件中的设备上顺序执行多个命令?

在Windows批处理文件中通过命令行ftp使用%USERNAME%环境变量

在 Windows 批处理文件中结束使用 START 命令启动的进程

使用“开始”命令后保留批处理文件

在批处理文件中使用TaskList命令时挂断

如何在批处理文件中使用sed命令

使批处理文件FOR命令可以不使用通配符?

批处理文件:在命令行中使用Loop

使用批处理文件运行 ant 命令

使用批处理文件执行cmd命令

如何在批处理文件中使用启动命令

使用自己的命令在cmd中运行批处理文件?

使用Windows批处理文件删除重复的文件

使用powershell编辑Windows批处理文件中的文件

使用Windows批处理文件中的查询日志记录或后台处理从多个文件运行sqlplus命令

Windows批处理文件:将结构转换为单行字符串

Windows批处理文件插入空白行/删除单行-nmap输出

Windows 批处理文件:如何运行多个批处理命令?