bat编程实例&bat编程代码大全
更新时间: 发布时间:2小时前0
| 类别 | 实例名称 | 核心代码示例 | 说明与关键要点 |
|---|
| :--- | :--- | :--- | :--- |
|---|
| 基础命令 | 显示系统信息 | 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 |
ew%%f"<tr><th>在for循环中处理当前目录所有.txt文件,在前面加上new前缀。注意双引号包裹文件名防止空格报错。</th></tr><tr><th></th><th>创建多层目录</th><th>ifnotexist"2025""Reports":""Backup""2025""Reports"先检查目录是否存在,若不存在则创建。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隐藏输出。 |
|---|
| 获取公网IP | for/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分享
海报