Windows 批处理脚本(bat)常见指令

126 阅读2分钟

简单介绍一些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%
  • 添加操作结果状态码
  • 限制单个日志文件大小

一些建议

  1. 所有危险操作前添加确认提示
  2. 关键路径变量使用双引号包裹
  3. 重要操作记录审计日志
  4. 脚本开头执行环境检测
  5. 返回明确的退出状态码

Thanks

blog.csdn.net/c1520006273…