首页 电脑 电脑学堂 查看内容

批处理几个常用技巧

2009-8-13 11:29 515 0

摘要: 仔细看完,你就成为高手了用批处理时经常会用到某些重复的语法,这样我们就可以用参数来避免重复写代码了。经典语法一:比如在我的博客广告中有这样一段代码for /l %%i in (1,1,600) do ...
关键词: nbsp 文件 一个 语法 路径 经典 变量 echo call 延迟

仔细看完,你就成为高手了用批处理时经常会用到某些重复的语法,这样我们就可以用参数来避免重复写代码了。经典语法一:比如在我的博客广告中有这样一段代码for /l %%i in (1,1,600) do ver >nul这种延迟是经长要使用到的。所以我们可以使用参数来解决这个问题!例如:yanchifor /l %%i in (1,1,%1) do ver >nulgoto :eof……call :yanchi 2000这样我们就可以调用延迟标签并修改延迟所需时间。经典语法二:一个绝对经典的是通用的IP函数:ipfor /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:%1') do set "%~2=%%i"goto :eof绝对经典的这段代码。向获得IP,就可以使用call :ip "IP Address" "ip"这样就把ip付给了变量ip其他的比如call :ip "DNS Servers" "dns"call :ip "Subnet Mask" "subnet"call :ip "Default Gateway" "gateway"call :ip "Physical Address" "phyaddr"call :ip "Dhcp Enabled" "dhcp"分别获得DNS 子网掩码 网关 物理地址 dhcp是否开启经典语法三:获取ping一个网站后获得的最大,最小,平均延迟,是我在写《多功能批处理》时想到的,呵呵,不知道以前别人有没有用过:sudufor /f "tokens=3,6,9 delims=, " %%i in ('ping -n 3 %1^|find /i "mini"') do (set min=%%iset max=%%jset ave=%%kset min=!min:~0,-2!set max=!max:~0,-2!set ave=!ave:~0,-3!echo\)goto :eof这样只要这样调用这个标签call :sudu www.163.com就可以获得ping网易后的延迟了,分别赋在变量min max ave中。经典语法四:获取磁盘分区,看见很多人用这个笨方法for %%i in (a b c d e f g h i ……)其实有一个更好的获取硬盘分区的方法:for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (set drive=%%iset drive=!drive:~-2!……)其实这个方法也挺好用的,也不难,磁盘分区被赋给了 !drive!变量。经典语法五:下面这个语法可以防止用户删除了批处理本身,可以使用下面这个语法。这个是我在《多功能批处理》中用到的,目的是方便执行计划任务命令。if not exist %windir%\everybat.exe copy "%~0" %windir%\everybat.exe >nul这样不仅可以防止用户删除批处理本身后(或是改名)批处理本身被删除(或改名),而且也简化了路径。毕竟批处理本身不大,复制到%windir%下先凑合着,或者自己建立一个文件夹在%progra~1%下,将自身复制到其中。经典语法六::dongfor /l %%i in (1,1,%i) do (set ",=%2"set/p=!%2:~%%i,1!for /l %%i in (1,1,%3 do ver>nul)goto :eof调用这个动画,不仅可以修改长度,而且可以修改动画显示内容和速度。call :dong 37 "新青年世界,http://hi.baidu.com/huajinghua" 600这样就达到了动画显示效果啦。而且避免动画显示空内容。 经典语法七::start@reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v help /t reg_sz /d %1@reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v help1 /t reg_sz /d %1@reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v help /t reg_sz /d %1goto :eof开机自动运行批处理,其实这个是最简单的,呵呵,不用说你也知道怎么用,可以配合上面的自身复制达到很好的效果 例如; call :start %windir%\*.bat:经典技巧八很多初学者最讨厌看帮助命令,认为不够人性化,但其实里面的帮助信息足够让你成为高手(如果你全部看懂的话),其中有一个很好用的语法就是另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:     ~I         - 删除任何引号("),扩充 %I     %~fI        - 将 %I 扩充到一个完全合格的路径名     %~dI        - 仅将 %I 扩充到一个驱动器号     %~pI        - 仅将 %I 扩充到一个路径     %~nI        - 仅将 %I 扩充到一个文件名     %~xI        - 仅将 %I 扩充到一个文件扩展名     %~sI        - 扩充的路径只含有短名     %~aI        - 将 %I 扩充到文件的文件属性     %~tI        - 将 %I 扩充到文件的日期/时间     %~zI        - 将 %I 扩充到文件的大小     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩充                   到找到的第一个完全合格的名称。如果环境变量名                   未被定义,或者没有找到文件,此组合键会扩充到                   空字符串可以组合修饰符来得到多重结果:     %~dpI       - 仅将 %I 扩充到一个驱动器号和路径     %~nxI       - 仅将 %I 扩充到一个文件名和扩展名     %~fsI       - 仅将 %I 扩充到一个带有短名的完整路径名     %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充                   到找到的第一个驱动器号和路径。     %~ftzaI     - 将 %I 扩充到类似输出线路的 DIR这个很多人看不懂,其实%~i ,i是指一任意一个参数 0,1,2,3……等,比如获取自身的路径,就可以用%~dp0,%~z0,获取自身的大小,而其,这些参数也可以进行拖放操作,拖放进入的第一个文件就是%~1了,以此类推……实例:将一个文件拖放到一个批处理中,要获得该文件的文件名,大小等可以用这个批处理@echo offecho 文件名为:%~n1echo 文件扩展名为:%~x1echo 文件全名为:%~nx1echo 文件路径为:%~f1echo 文件修改时间为: %~t1echo 文件所在盘符为: %~d1echo 文件目录为:%~dp1echo 文件属性为: %~a1echo 文件大小为:%~z1字节pause怎么样,这个例子足够你理解%~i的作用了吧,呵呵,很好,很强大!暂时想到这几个常用的经典语法技巧,其他的希望各位网友能补充,呵呵
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部