批处理命令
作者:追风剑情 发布于:2016-8-18 15:09 分类:批处理
当前目录%cd%与%~dp0
echo off echo path is %cd% echo path is %~dp0 pause运行
开启延迟环境变量扩展
setlocal enabledelayedexpansion
示例1
@echo off set a=4 set a=5&echo %a% pause
输出 4
原理:批处理会先给%a%赋值,再执行a=5
示例2
@echo off rem 开启延迟环境变量扩展 setlocal enabledelayedexpansion set a=4 set a=5&echo !a! pause
输出 5
原理:批处理会先执行a=5,再给!a!赋值。注意这里的写法是感叹号。
输入数据
set /p
示例1
@echo off rem 接收用户输入的数据并赋值给data变量 set /p data=请输入数据: echo 你输入的数据为:%data% pause
跳转命令
goto
示例1
@echo off rem 显示菜单 :MENU echo 菜单 echo 1.选项一 echo 2.选项二 echo 3.退出 rem set /p 接收用户输入的数据并赋值给menu变量 set /p menu=请输入选项: echo 你选择:%menu% rem /i 表示比较时不区分大小写 if /i "%menu%" == "1" goto ITEM1 rem if else需要用小括号对代码分组 if /i "%menu%" == "2" (goto ITEM2) else (goto EXIT) :ITEM1 echo 执行选项一操作... goto MENU :ITEM2 echo 执行选项二操作... goto MENU :EXIT pause
删除缓存目录
rmdir
选项:
/s 删除目录下所有文件
/q 不提示
@echo off rem 设置dos窗口标题 @title 批处理——删除三国战神缓存目录 rem 显示操作系统版本信息 echo 当前操作系统版本信息 ver wmic os get Caption set cacheDir=C:\Users\Administrator\AppData\LocalLow\zwwx if exist %cacheDir% ( echo 发现缓存目录 %cacheDir% rmdir /q /s %cacheDir% echo 缓存目录已删除! ) else ( echo 没缓存目录 ) pause
输入:
当前操作系统版本信息
Microsoft Windows [版本 6.1.7601]
Caption
Microsoft Windows 7 Ultimate
发现缓存目录 C:\Users\Administrator\AppData\LocalLow\zwwx
缓存目录已删除!
请按任意键继续. . .
复制目录
xcopy
选项:
/E 复制目录及下面的所有东西
/Y 覆盖文件时不进行提示
@echo off set srouce=D:\mydir set src=E:\dir rem 预先创建目标目录,避免提示。 MD %src% rem 复制目录及下面的所有东西,覆盖目标文件时不进行提示。 XCOPY %srouce% %src% /E/Y pause
跳转命令
call
@echo off echo test1 call :Label1 echo test2 pause :Label1 echo 111
输出
test1
111
test2
请按任意键继续. . .
获取时间
echo off echo 默认时间格式 echo %date% echo %time% echo --- echo 自定义时间格式(年-月-日 时:分:秒 星期) ::%date:~x,y%及%time:~x,y% 说明: x表示位置,y表示位数 echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% 星期%DATE:~-1% pause
for命令
@echo off rem 可输入for /? 来查看帮助信息 rem /r 递归搜索C盘下的所有exe文件,并输出文件路径 rem 如果不写c:,则对当前目录进行搜索 for /r c: %%i in (*.exe) do @echo %%i rem /d 只能搜索当前目录下的目录 for /d %%i in (*) do @echo %%i rem /l 迭代数值范围 rem 相当于for(int i=1; i<=5; i+=1) for /l %%i in (1,1,5) do @echo %%i rem 相当于for(int i=5; i>=1; i-=1) for /l %%i in (5,-1,1) do @echo %%i rem /f 逐行读取文件a.txt中的内容并输出 for /f %%i in (a.txt) do echo %%i rem 逐行读取文件a.txt中的内容并输出每行中以空格分割的第1个元素 for /f "delims= " %%i in (a.txt) do echo %%i rem 逐行读取文件a.txt中的内容并输出每行中以空格分割的第2个和第3个元素 rem %%i代表第2个元素,%%j代表第3个元素(必须按字母顺序) rem tokens还可以用通配符,例如tokens=*或tokens=2,*可tokens=2-10 for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j rem skip=2代表忽略文件的前两行 for /f "skip=2 tokens=*" %%i in (a.txt) do echo %%i rem eol用来指定当某行以什么符号开始时就忽略它 rem 当某行以#字符开始时,则被忽略 for /f "eol=# tokens=*" %%i in (a.txt) do echo %%i rem 如果路径有空格需要用双引号引起并加上usebackq关键字 for /f "usebackq" %%a in ("C:\Program Files\a.txt") do echo %%a rem 只读取第一行文件内容并把值赋给test for /f "delims=" %%i in (123.txt) do (set test=%%i)&(goto :next) :next echo %test% rem 遍历当前目录下的所有文件,并把文件名输出到List.txt中 dir *.* /b>List.txt pause
遍历目录下的特定文件
@echo off&setlocal enabledelayedexpansion @set p1=D:\照片\2017-02-26 @set p2=D:\照片\2017-02-19 @set p3=D:\照片\2017-01-20 @set p=%p1% %p2% %p3% rem 遍历多个指定目录 for %%a in (%p%) do ( if exist %%a ( rem 遍历指定目录下的所有*.jpg文件 for /f "delims=" %%b in ('dir %%a\*.jpg /b') do ( echo %%a\%%b ) ) ) pause
将内容保存到文件
@echo off rem >>代表追加内容到文件尾 rem echo hello world>d:\test.txt rem 前有数字时,数字表示已经打开的文件或设备句柄, rem 联合表示将本来输出到某个文件或设备的内容重定向,而非将缺省的标准输出重定向。 rem 0——stdin,标准输入设备,即键盘 rem 1——stdout,标准输出设备,即屏幕 rem 2——stderr,标准错误设备,即屏幕 rem 想要把某些特殊数字输入到文件需要在前面加转义符^ echo ^2>test.txt @pause
顺序执行多条命令(&&,||,|)
@echo off rem &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令 rem echo a && echo b && echo c rem 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令 rem echo a || echo b || echo c rem 管道命令,前一个命令的执行结果作为后一个命令的输入参数 echo 123 | findstr "23" @pause
接收启动命令参数
@echo off rem 打印第1个参数 echo %1 rem 打印第2个参数 echo %2 rem 去掉参数两边的引号 echo %~2 rem @pause>nul这样写就不会显示 请按任意键继续... @pause
if语句
@echo off rem 如果目录dir不存在,则创建。 if not exist dir md dir rem 如果输入的第1个参数为a,则打印ok rem if "%1"=="a" echo ok rem 等于(equ)、不等于(neq)、小于(lss)、小于或等于(leq) rem 大于(gtr)、大于或等于(geq) rem 2>1 if 2 gtr 1 echo GTR rem errorlevel用来检测上一个dos命令是否执行成功 rem 环境变量errorlevel的初始值为0, rem 当一些命令执行不成功,就会返回一个数值,如:1 ,2 等 if errorlevel 0 ( echo 命令执行成功! ) else ( echo 命令执行出错! ) rem 检查某个变量是否已定义 if defined str1 echo str1已被定义 @pause
goto :eof
@echo off call :label1 echo 这里会执行 pause rem 这里的goto :eof的作用是退出批处理 goto :eof echo 这里不会执行 :label1 echo 执行labe1 rem 这里的goto :eof的作用是结束label1的执行 goto :eof echo 这里不会执行
字符串处理
@echo off setlocal enabledelayedexpansion rem 字符串处理参见 https://www.cnblogs.com/mq0036/p/3429821.html set dir=D:\Test for /r %dir% %%i in (*.obj) do ( rem 必须要先开启延迟变量,否则感号号括起的变量会被当成字符串处理 set s=%%i rem 在循环体内必须用感叹号把变量括起 rem 输出时去掉路径中的文件后缀 echo !s:~0,-4! ) pause
@echo off setlocal enabledelayedexpansion set /p folder=请输入目录名: set dir=.\%folder% for /r %dir% %%i in (*.obj) do ( set s=%%i rem 去掉父路径 set s=!s:%cd%\=! rem 去掉文件后缀 set p=!s:~0,-4! echo !p! ) pause
标签: 批处理
日历
最新文章
随机文章
热门文章
分类
存档
- 2024年11月(3)
- 2024年10月(5)
- 2024年9月(3)
- 2024年8月(3)
- 2024年7月(11)
- 2024年6月(3)
- 2024年5月(9)
- 2024年4月(10)
- 2024年3月(11)
- 2024年2月(24)
- 2024年1月(12)
- 2023年12月(3)
- 2023年11月(9)
- 2023年10月(7)
- 2023年9月(2)
- 2023年8月(7)
- 2023年7月(9)
- 2023年6月(6)
- 2023年5月(7)
- 2023年4月(11)
- 2023年3月(6)
- 2023年2月(11)
- 2023年1月(8)
- 2022年12月(2)
- 2022年11月(4)
- 2022年10月(10)
- 2022年9月(2)
- 2022年8月(13)
- 2022年7月(7)
- 2022年6月(11)
- 2022年5月(18)
- 2022年4月(29)
- 2022年3月(5)
- 2022年2月(6)
- 2022年1月(8)
- 2021年12月(5)
- 2021年11月(3)
- 2021年10月(4)
- 2021年9月(9)
- 2021年8月(14)
- 2021年7月(8)
- 2021年6月(5)
- 2021年5月(2)
- 2021年4月(3)
- 2021年3月(7)
- 2021年2月(2)
- 2021年1月(8)
- 2020年12月(7)
- 2020年11月(2)
- 2020年10月(6)
- 2020年9月(9)
- 2020年8月(10)
- 2020年7月(9)
- 2020年6月(18)
- 2020年5月(4)
- 2020年4月(25)
- 2020年3月(38)
- 2020年1月(21)
- 2019年12月(13)
- 2019年11月(29)
- 2019年10月(44)
- 2019年9月(17)
- 2019年8月(18)
- 2019年7月(25)
- 2019年6月(25)
- 2019年5月(17)
- 2019年4月(10)
- 2019年3月(36)
- 2019年2月(35)
- 2019年1月(28)
- 2018年12月(30)
- 2018年11月(22)
- 2018年10月(4)
- 2018年9月(7)
- 2018年8月(13)
- 2018年7月(13)
- 2018年6月(6)
- 2018年5月(5)
- 2018年4月(13)
- 2018年3月(5)
- 2018年2月(3)
- 2018年1月(8)
- 2017年12月(35)
- 2017年11月(17)
- 2017年10月(16)
- 2017年9月(17)
- 2017年8月(20)
- 2017年7月(34)
- 2017年6月(17)
- 2017年5月(15)
- 2017年4月(32)
- 2017年3月(8)
- 2017年2月(2)
- 2017年1月(5)
- 2016年12月(14)
- 2016年11月(26)
- 2016年10月(12)
- 2016年9月(25)
- 2016年8月(32)
- 2016年7月(14)
- 2016年6月(21)
- 2016年5月(17)
- 2016年4月(13)
- 2016年3月(8)
- 2016年2月(8)
- 2016年1月(18)
- 2015年12月(13)
- 2015年11月(15)
- 2015年10月(12)
- 2015年9月(18)
- 2015年8月(21)
- 2015年7月(35)
- 2015年6月(13)
- 2015年5月(9)
- 2015年4月(4)
- 2015年3月(5)
- 2015年2月(4)
- 2015年1月(13)
- 2014年12月(7)
- 2014年11月(5)
- 2014年10月(4)
- 2014年9月(8)
- 2014年8月(16)
- 2014年7月(26)
- 2014年6月(22)
- 2014年5月(28)
- 2014年4月(15)
友情链接
- Unity官网
- Unity圣典
- Unity在线手册
- Unity中文手册(圣典)
- Unity官方中文论坛
- Unity游戏蛮牛用户文档
- Unity下载存档
- Unity引擎源码下载
- Unity服务
- Unity Ads
- wiki.unity3d
- Visual Studio Code官网
- SenseAR开发文档
- MSDN
- C# 参考
- C# 编程指南
- .NET Framework类库
- .NET 文档
- .NET 开发
- WPF官方文档
- uLua
- xLua
- SharpZipLib
- Protobuf-net
- Protobuf.js
- OpenSSL
- OPEN CASCADE
- JSON
- MessagePack
- C在线工具
- 游戏蛮牛
- GreenVPN
- 聚合数据
- 热云
- 融云
- 腾讯云
- 腾讯开放平台
- 腾讯游戏服务
- 腾讯游戏开发者平台
- 腾讯课堂
- 微信开放平台
- 腾讯实时音视频
- 腾讯即时通信IM
- 微信公众平台技术文档
- 白鹭引擎官网
- 白鹭引擎开放平台
- 白鹭引擎开发文档
- FairyGUI编辑器
- PureMVC-TypeScript
- 讯飞开放平台
- 亲加通讯云
- Cygwin
- Mono开发者联盟
- Scut游戏服务器引擎
- KBEngine游戏服务器引擎
- Photon游戏服务器引擎
- 码云
- SharpSvn
- 腾讯bugly
- 4399原创平台
- 开源中国
- Firebase
- Firebase-Admob-Unity
- google-services-unity
- Firebase SDK for Unity
- Google-Firebase-SDK
- AppsFlyer SDK
- android-repository
- CQASO
- Facebook开发者平台
- gradle下载
- GradleBuildTool下载
- Android Developers
- Google中国开发者
- AndroidDevTools
- Android社区
- Android开发工具
- Google Play Games Services
- Google商店
- Google APIs for Android
- 金钱豹VPN
- TouchSense SDK
- MakeHuman
- Online RSA Key Converter
- Windows UWP应用
- Visual Studio For Unity
- Open CASCADE Technology
- 慕课网
- 阿里云服务器ECS
- 在线免费文字转语音系统
- AI Studio
- 网云穿
- 百度网盘开放平台
- 迅捷画图
- 菜鸟工具
- [CSDN] 程序员研修院
- 华为人脸识别
- 百度AR导航导览SDK
- 海康威视官网
- 海康开放平台
- 海康SDK下载
- git download
交流QQ群
-
Flash游戏设计: 86184192
Unity游戏设计: 171855449
游戏设计订阅号