简单介绍一些Windows批处理脚本,方便日常运维时,通过命令行快捷操作,或者编写自动化脚本。
一、文件操作规范
1.1 带校验的文件复制
@echo off
set "source_file=app_build.exe"
set "target_dir=C:\deploy"
copy "%source_file%" "%target_dir%\" >nul
if %errorlevel% neq 0 (
echo 错误:文件复制失败
exit /b 1
)
if exist "%target_dir%\%source_file%" (
echo 文件验证通过
) else (
echo 错误:目标文件未找到
exit /b 1
)
关键技术点:
>nul屏蔽命令输出%errorlevel%检测操作结果exist验证文件存在性
二、参数处理规范
2.1 基础参数操作
@echo off
echo 脚本名称:%0
echo 首个参数:%1
echo 全部参数:%*
2.2 参数数量统计
@echo off
set count=0
for %%a in (%*) do set /a count+=1
echo 参数总数:%count%
参数处理符号:
%*:全部参数组成的字符串%1:第一个参数值shift:左移参数列表
三、进程管理技术
3.1 进程状态检测
@echo off
tasklist /FI "IMAGENAME eq notepad.exe" | find "notepad.exe" >nul
if %errorlevel% equ 0 (
echo 进程正在运行
) else (
echo 进程未找到
)
3.2 进程终止操作
taskkill /IM notepad.exe /F /T >nul
if %errorlevel% equ 0 (
echo 进程终止成功
) else (
echo 终止操作失败
)
常用参数说明:
/F:强制终止进程/T:终止进程树(包含子进程)/IM:指定进程映像名称
四、错误控制机制
4.1 错误输出重定向
:: 屏蔽所有输出
command >nul 2>&1
:: 记录错误日志
command 2>error.log
4.2 分层错误处理
@echo off
call :module1
if %errorlevel% neq 0 exit /b 1
call :module2
exit /b 0
:module1
echo 执行第一阶段操作
exit /b 0
:module2
echo 执行第二阶段操作
exit /b 1
五、版本兼容方案
5.1 操作系统版本检测
ver | find "10.0" >nul && (
echo Windows 10/11 系统
) || (
echo 旧版本系统
)
5.2 兼容性执行示例
:: Windows 7兼容模式
if exist "%ProgramFiles(x86)%" (
set PATH=%PATH%;C:\LegacyTools
)
六、日志记录标准
6.1 基础日志功能
@echo off
set LOGFILE=operation_%date:~0,4%%date:~5,2%%date:~8,2%.log
echo [%time%] 脚本启动 >> %LOGFILE%
echo [%time%] 执行核心操作 >> %LOGFILE%
echo [%time%] 操作完成 >> %LOGFILE%
日志优化建议:
- 使用ISO 8601日期格式:
%date:~0,4%-%date:~5,2%-%date:~8,2% - 添加操作结果状态码
- 限制单个日志文件大小
一些建议
- 所有危险操作前添加确认提示
- 关键路径变量使用双引号包裹
- 重要操作记录审计日志
- 脚本开头执行环境检测
- 返回明确的退出状态码