一些常用的batch命令

来源:互联网 发布:掉头发 白头发 知乎 编辑:程序博客网 时间:2024/05/16 15:31

最新工作中,需要编写一引起脚本文件,主要是为方便大家使用,尽量做到最简单的一键操作的功能。经过各种调试后,终于完成了功能,并且初步达到了当初的设想。

把最常用到的指令贴上来,方便以后需要时,能找到,也方便对有需要的人有所帮助。

@set VERSION_FILE_PATH=../../app/common/interface.c@sed -n -e 's/#define[ \t]*SW_VERSION_PINK[ \t]*[\(]*[ \t]*\([0-9]*\)[ \t]*[\)]*.*$/\1/p'  %VERSION_FILE_PATH% > ver.txt@set /p SW_VER= < ver.txt@del ver.txt@set SW_VER_HIGH=%SW_VER:~0,-2%@set SW_VER_LOW=%SW_VER:~-2,2%
上面的是获取文件中文件中的某个值或者说版本号,通过版本号,在生成所需要的文件中,不需要重新定义及修改。


if exist ME_Africa_sattp_S2.bin (   echo "ME_Africa_sattp_S2.bin exist") else (echo "ME_Africa_sattp_S2.bin No exist"SatTPClient.exe ME_Africa_sattp_S2.cfg ME_Africa_sattp_S2.bin)if exist Softcam.bin (   echo "Softcam.bin exist") else (echo "Softcam.bin No exist"Softcam.exe)
上面主要是判断文件是否存在,如果文件不存在,则执行else 中的文件生成文件,这样节约时间。



@echo offfor /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (  set DriveU=%%a)if defined DriveU (echo Update file Copy tu USB drive, please wait...COLOR 0Acopy MT_pink_update.bin %DriveU%\Software_V%SW_VER_HIGH%.%SW_VER_LOW%_%day%-%month%-%year%.bin) else (echo Please insert the usb flash drive.)
这个主要是获取是否已经插入可移动磁盘,如果插入可移动磁盘,就会自动Copy到移动磁盘中。现好像只支持U盘,移动硬盘倒是没有测试过。如果有问题,需要简单的修改一下就可以,也可以按照下面的配置要求,进行修改,达到所需要的要求。。
wmic logicaldisk where drivetype='2' get deviceid,descriptionwmic logicaldisk where "drivetype=2" get name::2=移动磁盘、3=本地磁盘、5=光驱。



:loop@echo offfor /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (  set DriveU=%%a)::判断DriveU是否为空if defined DriveU (echo Is in copy, please wait ...ping -n 3 127.0.0.1>nulCOLOR 0Acopy .\mapp.bin %DriveU%\mapp.binping -n 3 127.0.0.1>nul ) else (echo Please insert the usb flash drive[请插入U盘]ping -n 3 127.0.0.1>nul goto loop)exit
这个功能主要是Copy到U盘中,如果没有插入U盘,会一直提示你插入U盘,循环进行检测,直到插入U盘后Copy到U盘中才停止。而
ping -n 3 127.0.0.1>nul
主要是为了延时使用的。使用时需要调用@echo off关掉打印。
其实上面所使用的这些,无非就是对for的使用,通过学习,总结到如下几点:
<pre name="code" class="plain">FOR [参数] %%变量名 IN (相关文件或命令)   DO 执行的命令FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step)比如:for /l %%i in (1,1,5) do @echo %%i  --输出1 2 3 4 5   FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]   参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)参数 /d (参数只能显示当前目录下的目录名字)比如:for /r c:/ %%i in (boot.ini) do echo %%i --枚举了c盘所有目录   for /r d:/backup %%i in (1) do echo %%i  --枚举d/backup目录格式:FOR /D %variable IN (set) DO command [command-parameters]   参数 /F (使用文件解析来处理命令输出、字符串及文件内容。)这个参数主要用于目录搜索,不会搜索文件,/D 参数只能显示当前目录下的目录名字。(TTT特别说明:只会搜索指定目录下的目录,不会搜索再下一级的目录。)  tokens:它的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。

FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令

<span style="color: rgb(255, 0, 0); font-family: Arial; font-size: 14px; line-height: 21px; widows: auto;"></span><div style="font-family: 微软雅黑; font-size: 14px; line-height: 21px; widows: auto;"><span style="font-family:Arial;background-color: inherit;"><span style="color:#ff0000;background-color: inherit;">FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] </span><span style="color: rgb(51, 51, 51);">  </span><br style="background-color: inherit;" /></span></div><div style="font-family: 微软雅黑; font-size: 14px; line-height: 21px; widows: auto;"><span style="font-family:Arial;background-color: inherit;"><span style="color:#4bacc6;background-color: inherit;">参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)</span><br style="background-color: inherit;" /></span></div><div style="font-family: 微软雅黑; font-size: 14px; line-height: 21px; widows: auto;"><span style="font-family:Arial;background-color: inherit;"><span style="color:#4bacc6;background-color: inherit;">参数 /d (参数只能显示当前目录下的目录名字)</span></span></div><span style="color: rgb(255, 0, 0); font-family: 宋体; font-size: 14px; line-height: 21px; widows: auto;">delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键</span>



学习时,主要是参考如下文章,也感谢他们的默默奉献:

http://bbs.bathome.net/viewthread.php?tid=2899 

http://www.cnblogs.com/adforce/p/3282591.html 



1 0
原创粉丝点击