单行顺序执行(&
分隔符)
echo 第一条命令 & echo 第二条命令 & calc.exe
- 作用:无论前一条命令是否成功,后续命令都会执行。
- 场景:批量创建文件后启动程序:
mkdir C:\Logs & type NUL > C:\Logs\error.txt & notepad.exe
条件执行(&&
和 )
- 成功时执行(
&&
):dir C:\Target && echo "目录存在,继续操作"
- 失败时执行():
ping 192.0.2.0 || echo "网络连接失败!"
- 混合使用:
mklink D:\Symlink C:\Source && echo "链接创建成功" || echo "链接创建失败"
多行书写(自然换行)
@echo off echo 开始执行任务 xcopy /s C:\Source D:\Backup shutdown /r /t 60
- 特点:每条命令独立一行,按顺序执行。
- 注意:前一条命令报错可能导致后续命令终止(除非用
call
或start
)。
命令分组( 组合)
( echo 当前时间: %time% ping localhost -n 3 >nul echo 任务完成 ) >> log.txt
- 用途:将多条命令的输出重定向到同一文件,或作为整体进行条件判断:
(findstr "error" log.txt && echo 发现错误) || echo 无错误
调用子流程(call
命令)
-
调用其他批处理文件:
call "C:\Scripts\cleanup.bat"
-
调用当前文件内的标签:
call :subroutine exit /b :subroutine echo 子流程执行中... goto :eof
异步执行(start
命令)
start notepad.exe start /B wmplayer.exe echo 两个程序已后台启动
- 参数说明:
- 不加
/B
:新开窗口运行(异步)。 - 加
/B
:后台运行(不显示窗口)。
- 不加
⚠️ 关键注意事项
-
错误处理:
- 用 捕获错误:
net user Admin || echo 用户不存在 > error.log
- 启用错误继续:
cmd /c "错误命令 || 正确命令"
- 用 捕获错误:
-
变量延迟扩展:
循环中修改变量需启用setlocal enabledelayedexpansion
:setlocal enabledelayedexpansion for %%i in (1,2) do ( set count=%%i echo 当前值: !count! )
-
特殊字符转义:
包含&
, ,>
等符号时需用^
转义:echo 特殊符号^>需转义 ^& 处理
▶️ 最佳实践总结
需求 | 推荐方法 | 示例 |
---|---|---|
简单顺序执行 | & 或 多行书写 |
命令1 & 命令2 |
依赖前序命令成功 | && |
命令1 && 命令2 |
组合命令输出/重定向 | 分组 | (命令1 & 命令2) > output.txt |
模块化代码 | call 调用 |
call :subroutine |
并行启动程序 | start |
start /B 程序.exe |
引用说明:本文内容参考Microsoft官方文档《Windows Command-Line》及实践经验总结,批处理命令行为可能因Windows版本差异略有不同,建议在目标环境中测试。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9354.html