返回
调试策略

bat编程实例&bat编程代码大全

更新时间:    发布时间:2小时前0

ew%%f"<tr><th>在for循环中处理当前目录所有.txt文件,在前面加上new前缀。注意双引号包裹文件名防止空格报错。</th></tr><tr><th></th><th>创建多层目录</th><th>ifnotexist"2025""Reports":""Backup""2025""Reports"
类别实例名称核心代码示例说明与关键要点
:---:---:---:---
基础命令显示系统信息systeminfo</th><th>findstr/C:"内存"管道过滤系统信息,只显示物理内存行。注意findstr区分大小写,可用/I忽略。</th></tr><tr><th></th><th>延迟变量展开</th><th>setlocalenabledelayedexpansion+echo!变量!</th><th>解决循环内变量值实时更新的问题。例如for%%iin(123)doseta=%%i&echo!a!可输出123。</th></tr><tr><th><strong>文件操作</strong></th><th>批量重命名文件</th><th>for%%fin(*.txt)doren
先检查目录是否存在,若不存在则创建。mkdir会自动创建中间缺失的父目录。
循环控制读取文件每一行for/f""list.txt)doecho%%a/f用于解析文件,tokens=*表示取全部内容。默认按空格和制表符分割,加delims=可禁止分割。
遍历子目录文件for/r""(*.jpg)docopy"D:""Dest"""/r递归遍历指定目录及其所有子目录,将所有.jpg文件复制到目标文件夹。
条件判断判断文件是否存在ifexist".ini"存在)else(echo不存在)使用ifexist判断,注意括号必须成对,且if与左括号之间要有空格。
比较字符串if/i"!str!"admin"匹配)else(echo不匹配)/i忽略大小写。变量需用!包裹(若开启延迟扩展),否则可能无法正确比较循环中的值。
网络操作测试网络连通性ping-n4目标服务器IP>nul&&echo连通</th><th></th><th>echo超时利用&&</th><th></th><th>实现条件执行:ping成功则执行echo连通,失败则执行echo超时>nul隐藏输出。
获取公网IPfor/f"2delims=:"%%ain('nslookupmyip.opendnsresolver1.opendns2^>nul^</th><th>find""公网IP:%%a使用nslookup查询OpenDNS服务获取公网IP,find过滤含"的行,提取IP部分。注意^转义管道符。
系统管理关闭指定进程tasklist/fi"agenameeqnotepad.exe"</th><th>find/i</th></tr>otepad.exe" >nul && taskkill /f /im notepad.exe
先检查进程是否存在,存在则强制结束。/fi过滤条件,/f强制停止。
设置定时关机shutdown/s/t3600/c""s关机,/t设置秒数,/c添加注释。取消时用shutdown/a
高级技巧隐藏自身窗口运行在脚本开头加:if"=""0"通过start/min最小化启动自身,并传递一个参数(如hidden)防止递归。注意路径使用%~f0确保完整路径。
生成带时间戳的日志set"date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%:%time:~3,2%:%time:~6,2%"echo%timestamp%>>log.txt</th><th>截取日期和时间字符串组合成YYYY-MM-DD_HH:MM:SS格式。注意%time%前可能补空格,需用set替换空格。</th></tr><tr><th><strong>错误处理</strong></th><th>捕获错误级别</th><th>command后加iferrorlevel1(echo失败)else(echo成功)</th><th>errorlevel判断上一个命令的退出码。通常0表示成功,非0表示失败。注意iferrorleveln表示大于等于n。</th></tr><tr><th></th><th>重试逻辑</th><th>:retry+command+iferrorlevel1(ping127.0.0.1-n3>nul&gotoretry)</th><th>用标签实现循环,失败后等待3秒再重试。可加计数器(如set/acnt+=1)防止无限循环。</th></tr></table><p><strong>实战建议</strong>:编写 bat 脚本时,优先使用@echo off关闭命令回显,用setlocal enabledelayedexpansion处理循环变量。复杂逻辑建议拆分为多个子脚本,用call调用。调试时可临时注释@echo off` 观察每一步执行。

0点赞
0反对
0举报
0收藏
0评论
0分享
海报
分享到:
  • 我来说两句
    0
扫一扫访问当前网页
关闭
/ 5