5. 批处理文件简介使用批处理文件(亦称批处理程序或脚本),可以简化日常或重复性任务。批处理文件是纯文本文件,它包含一条或多条命令,其文件扩展名为 .bat 或 .cmd 。在命令提示符下键入批处理文件的名称,Cmd.exe 就会按照该文件中各个命令出现的顺序来逐个运行它们。所以批处理文件的特点是:一次建立,多次运行,适合进行重复性任务。在 DOS 中只能使用 .bat 的批处理文件。 可以在批处理文件中包含任何命令。某些命令,比如 for、goto 和 if 命令等,它们允许你对批处理文件中的命令作条件流程控制。例如,if 命令根据条件语句的结果来执行命令。还有些只能在批处理文件中执行的命令。 有关批处理文件的详细信息,请参考以下命令的帮助页。
6. 几个应用实例6.1 批量改名今天的《xxxHoLic》漫画更新到了 158 话,我下载后,得到如下文件:(加粗为用户输入的内容) C:\>d:(输入 D: 以切换到 D 盘,否则下一个 cd 命令无效) D:\>cd D:\xxxHoLic\vol14\158 D:\xxxHoLic\vol14\158>dir /b XXXholic158_001.jpg XXXholic158_002-003.jpg XXXholic158_004.JPG XXXholic158_005.JPG XXXholic158_006.jpg XXXholic158_007.JPG XXXholic158_008.jpg XXXholic158_009.jpg XXXholic158_010.JPG XXXholic158_011.JPG XXXholic158_012.jpg XXXholic158_013.JPG XXXholic158_014.JPG XXXholic158_015.JPG XXXholic158_016.jpg XXXholic158_017.jpg XXXholic158_018.JPG XXXholic158_019.jpg XXXholic158_020.JPG 我想将它们改名为 01.jpg ~ 20.jpg 用命令该怎样做呢?这里只提供一种可能的办法,实际上还有很多种方法,大家可触类旁通。 D:\xxxHoLic\vol14\158>for %i in (01,04,05,06,07,08,09) do ren XXXholic158_0%i.jp g %i.jpg(for 命令中,%i 变量遍历小括号中的内容) D:\xxxHoLic\vol14\158>ren XXXholic158_001.jpg 01.jpg ……(命令回显会显示实际执行的命令,省略输出若干) D:\xxxHoLic\vol14\158>ren XXXholic158_009.jpg 09.jpg D:\xxxHoLic\vol14\158>for /L %i in (10,1,20) do ren XXXholic158_0%i.jpg %i.jpg D:\xxxHoLic\vol14\158>ren XXXholic158_010.jpg 10.jpg (省略输出若干) D:\xxxHoLic\vol14\158>ren XXXholic158_020.jpg 20.jpg D:\xxxHoLic\vol14\158>ren XXXholic158_002-003.jpg 02-03.jpg(最后手动改名) D:\xxxHoLic\vol14\158> 以上主要通过 for...in...do 结构及 /L 参数,使得本来要 19 次的改名操作只用两个 for 命令及一个 ren 就搞定。for 命令详细用法请参考其帮助页。 6.2 批量“粉碎”文件接着刚才的例子,如果我想用 4.2 节所述的方法“粉碎”当前文件夹下的所有 jpeg 文件,我该怎样做? D:\xxxHoLic\vol14\158>for %i in (*.jpg) do copy nul %i /y 这里使用 /y 来防止 copy 的覆盖前提示。 6.3 清理 Windows 临时文件夹 %tmp%“%tmp%”这个环境变量保存了 Windows 临时文件夹的位置,通常这个文件夹是 C:\Documents and Settings\用户名\Local Settings\Temp 。某些程序(典型如安装程序,解压缩软件)运行过程中产生的临时文件会存放于此,总之,是个堆放杂物的地方,其中文件一般可全部删除。在“我的电脑”的 “地址栏”(若找不到地址栏,“查看”->“工具栏”->“地址栏”)中输入“%tmp%”,然后回车,看看你的临时文件夹有多少东西。 下面讨论清理。可能每隔一段时间就需要清理临时文件夹,因此我们采用批处理文件。以下为 CleanTmp.cmd 文件的内容。 第一种方案:全部删除 @echo off rem 命令前加“@”会不让该命令显示出来,而“echo off”的作用是关闭整个 rem 脚本的命令回显。若不懂,请注释掉第一行(在最前面加“rem ”)再试。 rem CleanTmp.cmd : 清理 Windows 临时文件夹 rem Author : Henix<http://hi.baidu.com/shell32> echo Cleaning... rd /s /q %tmp% md %tmp% echo Done. pause 也许你希望留下一些文件,比如 *.log ,那也可以用第二种方案:删除部分文件 rem CleanTmp.cmd : 清理 Windows 临时文件夹 rem Author : Henix<http://hi.baidu.com/shell32> del %tmp%\*.tmp /q del %tmp%\*.wmv /q del %tmp%\*.xml /q rem 也可以添加更多,你的临时文件夹中经常出现的,而你又不想要的文件 pause 将以上内容保存为 CleanTmp.cmd ,放在桌面(或其他你方便的地方),以后你只需双击这个 CleanTmp.cmd 就可清理临时文件夹。 6.4 优化服务配置:svc2kxp.cmd如果说以上这些脚本只是我个人举的教学样例,只是些小打小闹的话,那下面这个德国人写的脚本会让你见识到什么是真正的脚本应用,以及真正的脚本编程。 在“开始”->“运行”中输入“services.msc”,会显示你的计算机当前的服务配置。怎样配置这些服务以达到最优化,是网上很 多论坛讨论的话题。这里并不讨论怎样配置服务,因为有 svc2kxp.cmd 帮我们配置。该软件的实际使用效果我不清楚,只是推荐它来学习脚本编程。 官方网站:http://www.ntsvcfg.de/ntsvcfg_eng.html(英文) 看别人写的脚本也是一种有效的学习方法。这个脚本注释丰富,大量使用了 if...goto 、reg 、文件操作等,看完后定会让你受益匪浅(反正我是没法看完的啦)。 6.5 下载一系列图片:for + wget有时我们在网上看到一系列图片,想把它们都下载下来,怎么办?首先要取得图片的地址,只有当图片的地址有一定规律性时,才能使用此法下载:在图 片上点右键->“属性”,然后复制“地址”一栏的内容。假设要下载的图片地址很有规律,恰为 http://www.example.com/ 下的 1.jpg - 100.jpg 。 网上有很多命令行小程序,可以增强命令行的功能。这里使用 GNU 的 GNU Wget ,该程序可通过 HTTP 、HTTPS 、FTP 协议下载文件。 官方网站:http://www.gnu.org/software/wget/ 。Windows 版下载地址:http://www.christopherlewis.com/WGet/WGetFiles.htm 一般下载最新的稳定(stable)版本,解压后进入 wget 的安装目录,输入: D:\soft\wget>md E:\pic (建立目录用来存放下载的图片) D:\soft\wget>for /L %i in (1,1,100) do wget -P E:\pic http://www.example.com/ %i.jpg (注意,wget 中的参数以“-”开头,而不是“/”,而且严格区分大小写。这是 Unix 风格的 参数写法。) (-P 指定文件的存放位置。wget 的其他功能请参考其帮助手册页) 7. 参考文献 [1] Paul Love, Joe Merlino 等:《Unix 入门经典》,张楚雄、许文昭译,清华大学出版社,2006 附录1:常用 DOS 命令一览(一)内部命令 1. CD(全程 CHDIR ,显示当前目录的名称或将其更改) (二)外部命令 1. ATTRIB(显示或更改文件属性) 附录2:Windows 中的一些有用的命令下表列出了 Windows 中的一些有用的命令,使用方法请参考其帮助页。
附录3:相关资源 |
Windows 命令行基础(下)
猜你喜欢
转载自hnsyandy.iteye.com/blog/871233
今日推荐
周排行