在Windows中,我們經(jīng)常要批量地來完成相同的工作,很多用戶往往是上網(wǎng)搜索第三方軟件來完成。其實(shí)在Windows中,巧妙地利用For命令就可以很輕松地完成很多批量工作。為了更好地理解我們的下一步實(shí)戰(zhàn),先讓我們來看一下For命令的用法。For命令的具體格式如下:
	
	  For %variable IN (set) do command [command-parameters],
	
	  %variable——指定一個(gè)單一字母可替換的參數(shù)
	
	  (set)——指定一個(gè)或一組文件,可以使用通配符
	
	  command——指定對(duì)每個(gè)文件執(zhí)行的命令
	
	  command-parameters——為特定命令指定參數(shù)或命令行開關(guān)
	
	  在批處理文件中使用 For 命令時(shí),指定變量請(qǐng)使用“%%variable”,而不要用“ %variable”。變量名稱是區(qū)分大小寫的,所以“%i”不同于“%I”。由于For命令的用法和參數(shù)非常多,變化復(fù)雜,這里因篇幅原因就不再一一羅列了,用戶可以在命令提示符后鍵入“For /?”來獲得具體幫助。下面我們將直接進(jìn)入實(shí)戰(zhàn),并結(jié)合實(shí)戰(zhàn)講述For命令的具體用法。
	
	  1. 給文本文件批量加上落款
	
	  在很多情況下,我們編輯處理完文檔,都要給文件加上一個(gè)包括“通信地址、QQ、E-MAIL等等信息”的落款,如投往編輯部的稿件。假如只有一篇文章,直接輸入倒也罷了,但假如你有很多這樣的文件,該怎么辦呢?難道每一篇稿件都要手工一個(gè)字一個(gè)字地輸入那一成不變的落款嗎?NO!完全沒有必要這樣費(fèi)神,我們可以一次性地給所有文件添加上落款,假如我們要給放在“ABCDE”目錄下的所有文本文件加上落款。那么就請(qǐng)先建一個(gè)名為Address.txt的文本文件,錄入通信地址、QQ、E-mail等等信息,保存到E盤的根目錄。
	
	  再新建一個(gè)文本文件,錄入以下內(nèi)容:
	
	  MD E:/TEMPabcde
	
	  for /r E:/ABCDE %%I in (*.txt) do copy %%I E:/address.txt E:/tempABCDE/
	
	  for /r E:/tempABCDE %%I in (*.txt) do copy %%I E:/ABCDE/
	
	  echo y|del E:/TEMPabcde
	
	  echo y|rd E:/TEMPabcde
	
	  錄入完畢,經(jīng)檢查確認(rèn)無誤后,另存為“給文件加落款.bat”,也保存到E盤的根目錄。現(xiàn)在,只需雙擊此批處理文件,就可以為E:/ABCDE文件夾中所有的TXT文件加上落款。
	
	  晨風(fēng)提示:For命令指定參數(shù)“%I”從“E:/ABCDE”文件夾中的所有文本文件中取值 ;“/r”參數(shù)表示包括子目錄。
	
	  2. 批量獲取文件列表
	
	  假如我們需要制作某個(gè)目錄下的文件清單,如電影文件的文件清單,可以用For命令來輕松完成。我們以制作F盤上的所有RM格式的電影文件的清單為例:
	
	  先在F盤根目錄下建一個(gè)名為“列文件清單.bat”的文本文件,然后輸入以下內(nèi)容并保存:
	
	  For /r F:/ %%i in (*.rm) DO @echo %%~fi >>F:/RMList.txt
	
	  雙擊此批處理文件,即可快速列出F盤上所有的以RM為擴(kuò)展名的電影文件的清單。
	
	  晨風(fēng)提示:For命令指定參數(shù)“%i”從F盤的所有以RM為擴(kuò)展名的文件中取值;“@echo %%?fi”表示將所有的RM文件及其完整路徑顯示出來;“>>F?\RMList.txt”表示將輸出結(jié)果重定向到F?\RMList.txt文件中,打開該文件,即可看到具體的目錄清單;“?f”表示完整路徑。還可以使用“%?n”(文件名)、“%?x”(文件擴(kuò)展名)、“%?d”(驅(qū)動(dòng)器)、“%?p”(路徑)、“%?s”(完整路徑)、“%?t”(文件日期)、“%?z”(文件大?。┑葏?shù)。
	
	  3. 快速刪除磁盤上的空文件夾
	
	  假設(shè)我們要清理D盤上的空文件夾,那么請(qǐng)先用記事本建一個(gè)名為“kill.bat”的文件,在該文件中輸入以下內(nèi)容:
	
	  dir d:/ /ad /b /s |sort /r >>d:/kill.txt
	
	  For /f %%i in (d:/kill.txt) DO rd %%i
	
	  echo y |del d:/kill.txt
	
	  先查找并刪除全部“Thumbs.db”文件,然后雙擊該文件,D盤上所有的空文件夾很快就消失的無影無蹤了。
	
	  晨風(fēng)提示:“dir d:/”表示列D盤上的所有目錄包括子目錄列表,其中參數(shù)“/ad”表示列所有目錄;參數(shù)“/b”表示只列出文件夾名稱而不顯示標(biāo)題信息或摘要:參數(shù)“/s”表示搜索,即查找D盤中的所有文件夾和子文件夾;“|”是管道符號(hào),將Dir命令的結(jié)果傳遞給“sort”命令;“sort”命令表示排序;“/r”表示逆序列排序。之所以要逆序列排序,是因?yàn)橥ㄟ^逆序列排序后,D盤上的所有子文件夾總是會(huì)位于其父文件夾的前面,這樣在用For命令刪除空文件夾時(shí),空的子文件夾被首先刪除了,因此空的父文件夾就可以刪除了。否則,因空的父文件夾中尚有空的子文件夾,會(huì)造成無法刪除的情況。“>>d:/kill.txt”的作用是讓屏幕回顯重新定位到“d:/kill.txt”文件中。
	
	  For 命令中參數(shù)“/f”的作用是讓For命令從指定的文件中讀取數(shù)據(jù)作為變量,示例是從Dir的結(jié)果文件“d:/kill.txt”文件中讀取數(shù)據(jù),每次讀取一行傳遞給RD命令;RD命令的作用是刪除由For命令傳遞過來的每一個(gè)文件夾,因RD命令無法刪除尚有內(nèi)容的文件夾,所以經(jīng)過For命令的循環(huán)后,只是刪除了所有的空文件夾,有內(nèi)容的文件夾會(huì)完好無損地被保留下來。
	
	  4. 批量獲取局域網(wǎng)中所有IP地址與主機(jī)名的對(duì)應(yīng)關(guān)系
	
	  假如你是網(wǎng)管,肯定需要獲取一張本網(wǎng)段內(nèi)所有IP地址與主機(jī)名的對(duì)照表。假如你不想使用第三方軟件的話,不妨用For命令試試。
	
	  在命令提示符窗口中輸入以下命令:
	
	  For /L %i in (0,1,254) DO ping -a -n 1 192.168..0.%i |Find /i "reply" >>E:/IPAddress.txt
	
	  好了,等命令執(zhí)行完畢,打開“E:/IPAddress.txt”文件,一張完整的IP與主機(jī)名的對(duì)照表已經(jīng)初步形成了,你只需作簡(jiǎn)單的編輯修改即可打印輸出了。
	
	  晨風(fēng)提示:For命令指定參數(shù)“%i”從0開始,每次增加1,直到254為止,即一個(gè)C類網(wǎng)段的全部地址。假如用戶的局域網(wǎng)自行定義的了IP地址,應(yīng)根據(jù)實(shí)際情況設(shè)置,如可以為“172.16.0”;“-a”表示獲取主機(jī)名;“-n -1”表示回顯的次數(shù)為1次,默認(rèn)情況下為4次;Find /i "reply“表示查找已響應(yīng)的主機(jī),即已ping通的主機(jī);“E:/IPAddress.txt”表示將屏幕回顯內(nèi)容輸入到“:/IPAddress.txt”文件中。
新聞熱點(diǎn)
疑難解答
圖片精選