前面我們已經(jīng)熟悉了基本的命令和基本符號, 對簡(jiǎn)單的DOS批處理腳本都已經(jīng)有了初步的了解, 本節, 我們來(lái)講述FOR命令用法及相關(guān)的實(shí)例, 寫(xiě)出更好的、可視性更強的腳本。
上一章的鏈接
DOS批處理高級教程(一) 批處理基礎
FOR %%variable IN (set) DO command [command-parameters]
下面的各自參數, 就不加贅述了, 直接通過(guò)實(shí)例描述運行理解。
@echo offfor /d %%i in (c:\*) do echo %%ipause@echo offfor /d %%i in (???) do echo %%ipause枚舉C盤(pán)下所有的 .exe 程序, 如果不帶c:\ 則表示為當前目錄
@echo offfor /r c:\ %%i in (*.exe) do echo %%ipause有過(guò)編程經(jīng)驗, 知道lispace, 或者 seq 的 知道這個(gè)列表推導式是什么了
@echo offfor /l %%i in (1,1,5) do @echo %%ipause\迭代及文件解析
使用文件解析來(lái)處理命令輸出、字符串及文件內容。使用迭代變量定義要檢查的內容或字符串,并使用各種options選項進(jìn)一步修改解析方式。使用options令牌選項指定哪些令牌應該作為迭代變量傳遞。請注意:在沒(méi)有使用令牌選項時(shí),/F 將只檢查第一個(gè)令牌。
文件解析過(guò)程包括讀取輸出、字符串或文件內容,將其分成獨立的文本行以及再將每行解析成零個(gè)或更多個(gè)令牌。然后通過(guò)設置為令牌的迭代變量值,調用 for 循環(huán)。默認情況下,/F 傳遞每個(gè)文件每一行的第一個(gè)空白分隔符號。跳過(guò)空行。
@echo offrem 首先建立臨時(shí)文件test.txtecho ;注釋行,這是臨時(shí)文件,用完刪除 >test.txtecho 11段 12段 13段 14段 15段 16段 >>test.txtecho 21段,22段,23段,24段,25段,26段 >>test.txtecho 31段-32段-33段-34段-35段-36段 >>test.txtFOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%kPauseDel test.txt'''-> demo2.bat'''@echo offFOR /F "eol= delims=" %%i in (test.txt) do echo %%iPause'''demo3.bat '''@echo offFOR /F "delims=" %%i in ('net user') do @echo %%ipause都不一一列舉了, 都根據格式試驗下即可。 另外也可以在控制臺中查詢(xún)。
FOR /F "delims=" %%i IN (temp.txt) DO echo %%~ipausedel temp.txtFOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fipause略
主要是熟悉, if和增強if即可; 前面已經(jīng)舉過(guò)不少例子了
@echo offif not exist "c:\test" (echo 存在文件) ELSE echo 不存在文件pause//2@echo offset /p var=請輸入一個(gè)數字:if %var% LEQ 4 (echo 我小于等于4) ELSE echo 我不小于等于4pause以后有相關(guān)非常好的腳本, 并且能充分表達出含義的補上, 目前沒(méi)有這么多需求
參考文章
http://blog.csdn.net/lanbing510/article/details/7461073
關(guān)于更深入的DOS批處理教程請看下一章, 都有大致了解, 回來(lái)查詢(xún)相關(guān)命令并熟悉也不失為一個(gè)方法。
聯(lián)系客服