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

2023-11-30

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

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

would be

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

if not errorlevel 1表示之前执行过的命令not以退出代码终止大于0。作为命令dir and md永远不会以负值退出,只以 0 或更大的值(几乎所有命令和控制台应用程序)和值退出0是成功的退出代码,这是测试成功执行的正确方法dir and md.

其他有用的 Stack Overflow 主题errorlevel:

  • 哪些 cmd.exe 内部命令在成功后将 ERRORLEVEL 清除为 0?
  • 内部 cmd.exe 命令设置的 ERRORLEVEL 值是多少?

混合无条件运算符时必须小心&与条件运算符类似&& and ||因为执行顺序不一定是命令行上命令的顺序。

Example:

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%"

The ECHO命令的执行始终独立于第一个命令的执行结果DIR而第二个DIR仅当第一个时才执行DIR像在 Windows XP 上一样失败,或者用户的配置文件文件夹不在驱动器 C: 上或不在文件夹中Users at all.

有必要使用( and )在执行时ECHO仅当首先DIR第二秒后失败DIR独立于第二个结果DIR.

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或者在批处理文件中不使用这两个命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Windows 批处理文件的单行多个命令 的相关文章

随机推荐

  • jQuery onclick 删除表格行

    如何点击删除表格行 这里有一个jsfiddle 我只想删除 del 链接嵌套的行 而不是脚本现在执行的最后一行 单击呼叫delTableRow 函数并且需要更改该函数以删除嵌套的 del 链接行
  • jqGrid 多选上的 PrettyCheckable

    我有一个jqGrid带有我用 CSS 自定义的多选复选框的表格和漂亮可检查 要自定义我设置的表格的所有复选框 prettyCheckable 如下 jQuery document ready function input type chec
  • sqoop 与 mysql 的导入问题

    我有一个基于 cdh5 的 hadoop ha 设置 我尝试使用 sqoop 从 mysql 导入表失败 并出现以下错误 15 03 20 12 47 53 ERROR manager SqlManager Error reading fr
  • 空格上仅支持 JavaScript 的自动换行功能?

    我发现的大多数自动换行功能都绑定到 css 和 或浏览器 dom 我正在 javascript 环境 rhino 中工作 需要找到或设计一个更好的自动换行 该换行可以在给定行长度值之前的空白处中断 我当前的解决方案只是搜索给定字符之前的最后
  • C++ 中如何进行柯里化?

    什么是柯里化 C 中如何进行柯里化 请解释一下STL容器中的活页夹 1 什么是柯里化 柯里化只是意味着将多个参数的函数转换为单个参数的函数 使用一个例子可以很容易地说明这一点 取一个函数f它接受三个参数 int f int a std st
  • 解决 pex 内部类

    当被测试的类是内部类时 有什么方法可以让 pex 工作吗 密封课程怎么样 我的意思是 毕竟这种类型的工具非常适合 API 测试 有时您可能希望至少将内容保留在内部 Thanks 通过以下方式为测试组件提供内部可见性InternalsVisi
  • 有没有办法模糊匹配或提供分数作为行值应与哪个 ID 或组关联的假设?

    我有一个看起来像这样的数据集 structure list ID c 1 2 3 4 5 6 7 8 9 10 Date c 2020 01 n04 2020 04 03 2020 12 10 2020 09 12 2020 11 19 2
  • 在运行时修改函数(拉出局部变量)

    想象一下这个简单的函数创建变量的修改值default modified default 0 def modify modified default 1 print modified replace with OS call I can t
  • 从单词列表中提取所有匹配的关键字并创建一个新的数据框 pandas [重复]

    这个问题在这里已经有答案了 我想从意见列中提取所有匹配的关键字 如果它们与关键字列表中的单词匹配 则在新列中打印所有匹配的单词 包括重复的单词 当前代码仅提取第一个匹配的单词 不包含重复的单词 import pandas as pd df
  • 作为 Maven 构建过程的一部分运行量角器测试

    我有一个 Maven 项目 我不想更改 POM 以便当我构建项目 Clean Install 时 在编译部分之后 将启动一组量角器测试 打开 selenium 并做几件事 并且仅如果测试通过 则构建本身也通过 我似乎找不到能为我提供这种功能
  • R 计算 for 循环中的平均值

    我有我的代码 V max 10 V min 0 n 1 H 1 C c 0 0 01 0 1 1 par mfrow c length C 1 1 mar c 2 0 2 0 oma c 1 5 0 0 V lt function C H
  • 桌面 DLL 中的 Prism PopupChildWindowAction 缺失

    我正在尝试在 WPF Prism 桌面应用程序中实现模式对话框 从 Prism 指导中我可以看到正确的方法应该是使用交互
  • Xamarin Forms - 在运行时翻译抽屉菜单项

    我正在遵循优秀的教程 Link 关于 Xamarin Forms 中的多语言 一切正常 但我有一个问题 在我的应用程序中 我使用 Syncfusion 的导航抽屉 因为我在 ListView 中生成菜单项 如下所示 DrawerPage x
  • 批处理脚本未按预期分配变量

    我正在编写一个批处理脚本 它将分配一个变量字符串 然后修剪它 我面临两个问题 变量分配不正确 它从变量文件中获取最后一个值 我第一次运行脚本时未分配变量 我需要第二次运行脚本以查看变量是否已分配 在第三次运行时 我可以看到修剪正在起作用 我
  • 将数据帧中的字符转换为时间戳

    我在数据框中有一个被识别为字符类的时间戳 由于某种原因 我无法将其转换为 poxis 时间戳 这是数据示例 ID dateTime stage 1 2016 11 01T00 00 00 000Z 4 82 2 2016 11 01T00
  • 如何使 Text::slug() 正确转换德语变音符号?

    我正在使用 CakePHP 3 6 当我使用带有德语变音符号的单词时 例如 Text slug Grundst cke 我会得到 Grundstucke 其中 u 但这是不正确的 我应该得到 Grundstuecke 其中 ue 是否有一个
  • 将整数数组传递给 ASP.NET Web API?

    我有一个 ASP NET Web API 版本 4 REST 服务 我需要在其中传递一个整数数组 这是我的操作方法 public IEnumerable
  • 多个 Mat Paginator 无法在 Angular 组件中工作

    我有三个不同的 div Post Todo User 根据用户选择我显示不同的表格 例如 默认情况下Post部分加载表100 records 如果用户选择Todo部分 表格应显示Todo记录等带有分页 I ve three datasour
  • R tableGrob 更改行的格式

    我有一些相对简单的代码来创建用于打印到 PDF 的表格 library gridExtra df lt head iris tableGrob df gp gpar fontsize 8 rows NULL 我想让最后一行的格式与标题行相同
  • 使用 Windows 批处理文件的单行多个命令

    我尝试了解批处理文件中单个命令行中的多个命令如何工作 dir md folder1 rename folder1 mainfolder 和其他具有类似命令的情况 但是 替换为 dir md folder1 rename folder1 ma