學(xué)會(huì)批處理,用心學(xué)很容易!另一不錯(cuò)的見(jiàn)解
更新時(shí)間:2007年03月15日 00:00:00 作者:
for /L [%% | %]variable in (start,step,end) do command [command-parameters]
集合是一系列按步長(zhǎng)量劃分的、從頭到尾的數(shù)字。這樣,(1,1,5) 將生成序列 1 2 3 4 5,而 (5,-1,1) 將生成序列 (5 4 3 2 1)。
文件解析
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /F ["options"] [%% | %]variable in ('command') do command [command-parameters]
或者,如果出現(xiàn) usebackq 選項(xiàng):
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ('literal string') do command [command-parameters]
for /F ["options"] [%% | %]variable in (`command`) docommand [command-parameters]
filenameset 參數(shù)指定一個(gè)或多個(gè)文件名稱(chēng)。在繼續(xù)到 filenameset 中的下一個(gè)文件之前,每個(gè)文件都會(huì)被打開(kāi)、讀取和處理。
過(guò)程由讀取文件、分成獨(dú)立的文本行及然后將每行解析成零個(gè)或更多個(gè)令牌組成。然后使用設(shè)置為找到的一個(gè)或多個(gè)令牌字符串的變量值(或多個(gè)值)集合調(diào)用 for 循環(huán)體。默認(rèn)情況下,/F 傳遞每個(gè)文件每一行的第一個(gè)空白分隔符號(hào)。
跳過(guò)空行。通過(guò)指定可選的“options”參數(shù)可以覆蓋默認(rèn)的解析行為。這是一個(gè)引用字符串,它包含一個(gè)或多個(gè)關(guān)鍵字以指定不同的解析選項(xiàng)。關(guān)鍵字是:
關(guān)鍵字 說(shuō)明
eol=c 指定行尾注釋字符(只一個(gè)字符)
skip=n 指定在文件的開(kāi)頭跳過(guò)的行數(shù)。
delims=xxx 指定定界符集合。這將替換空格和制表符的默認(rèn)分隔符集。
tokens=x,y,m-n 指定將令牌從每行傳遞到每個(gè)反復(fù)的正文。這將導(dǎo)致分配其他變量名。m-n 格式是一個(gè)范圍,指定從 mth 到 nth 的令牌。如果在令牌 = 字符串中最后一個(gè)字符是星號(hào),則將分配附加的變量,并在解析最后一個(gè)令牌后在行上接收剩余的文本。
usebackq 指定將右引號(hào)字符串作為命令執(zhí)行,單引號(hào)字符串是文字字符串命令,您可以使用雙引號(hào)包括 filenameset 中的文件名。
變量替換
此外,已經(jīng)增強(qiáng)了 for 變量引用的替換修改程序?,F(xiàn)在可以使用下列可選的語(yǔ)法(對(duì)于任何變量 I):
變量(使用修改程序) 說(shuō)明
%~I 展開(kāi)刪除了周?chē)娜魏我?hào) (") 的 %I
%~fI 將 %I 展開(kāi)到完全合格的路徑名
%~dI 只將 %I 展開(kāi)到驅(qū)動(dòng)器號(hào)
%~pI 只將 %I 展開(kāi)到路徑
%~nI 只將 %I 展開(kāi)到文件名
%~xI 只將 %I 展開(kāi)到文件擴(kuò)展名
%~sI 展開(kāi)路徑以只包含短名稱(chēng)
%~aI 將 %I 展開(kāi)到文件的文件屬性
%~tI 將 %I 展開(kāi)到文件的日期/時(shí)間
%~zI 將 %I 展開(kāi)到文件大小
%~$PATH:I 搜索 PATH 環(huán)境變量所列出的目錄,并將 %I 展開(kāi)開(kāi)到第一個(gè)找到結(jié)果的全部合格名稱(chēng)。如果沒(méi)有定義環(huán)境變量名,或搜索后沒(méi)有找到文件,則此修改程序?qū)U(kuò)展為空字符串。
修改程序可以合并以獲得復(fù)雜的結(jié)果:
變量(使用合并的修改程序) 說(shuō)明
%~dpI 只將 %I 展開(kāi)到驅(qū)動(dòng)器號(hào)和路徑
%~nxI 只將 %I 展開(kāi)到文件名和擴(kuò)展名
%~fsI 將 %I 展開(kāi)到只包含短名稱(chēng)的完整路徑名
%~dp$PATH:I 在 PATH 環(huán)境變量所列出的目錄中搜索 %I,并展開(kāi)到第一個(gè)找到結(jié)果的驅(qū)動(dòng)器號(hào)和路徑
%~ftzaI 將 %I 擴(kuò)展到與 dir 相似的輸出行
注意
在上述范例中,%I 和 PATH 可被其他有效值替換。通過(guò)有效的 for 變量名終止 %~ 語(yǔ)法。
使用大寫(xiě)變量名(例如 %I)可以使代碼更具可讀性,并且避免與不區(qū)分大小寫(xiě)的修改程序混淆。
Shift
更改批處理文件中可替換參數(shù)的位置。
shift
啟用命令擴(kuò)展(Windows 2000 中的默認(rèn)設(shè)置)后,shift 命令支持 /n 開(kāi)關(guān),該開(kāi)關(guān)通知命令在第 n 個(gè)參數(shù)處開(kāi)始更改,n 可以是從 0 到 8 的任何一個(gè)值。例如,
SHIFT /2
將 %3 改為 %2,將 %4 改為 %3 等等,而 %0 和 %1 保持不變。
篩選器命令
篩選器命令可以幫助您排序、查看和選擇部分命令輸出結(jié)果。
通過(guò)篩選器命令傳遞信息
篩選器命令可以劃分、重排以及提取通過(guò)的部分信息操作。Windows 2000 有三個(gè)篩選器命令:
more 命令每次顯示一屏文件內(nèi)容或命令輸出。
find 命令在文件和命令輸出中搜索指定字符。
sort 命令按字母順序排列文件和命令輸出。
要將輸入從文件發(fā)送到篩選器命令,請(qǐng)使用小于符號(hào) (<)。如果要篩選器命令從其他命令獲得輸入,請(qǐng)使用管道 (|)。
使用 more 命令來(lái)控制屏幕顯示
more 命令每次一屏地顯示文件的內(nèi)容或命令輸出。例如,下面的 more 命令每次顯示一屏 List.txt 文件的內(nèi)容:
more < list.txt
信息顯示一屏后,會(huì)出現(xiàn)字“More”。要繼續(xù)顯示下一屏,請(qǐng)按鍵盤(pán)上任意鍵。要停止命令且不查看詳細(xì)信息,請(qǐng)按 CTRL+C 鍵。
如果使用產(chǎn)生多屏輸出的命令,more 將十分有用。例如,假設(shè)定要查看硬盤(pán)的目錄樹(shù)。如果 Windows 2000 不能將目錄在一屏內(nèi)全部顯示出來(lái),請(qǐng)使用帶管道號(hào) (|) 和 more 命令的 tree 命令,如下例所示:
tree c:\ | more
tree 命令的第一屏輸出被顯示,后跟詞“More”。Windows 2000 暫停,直到用戶(hù)按鍵盤(pán)上的任意鍵為止(PAUSE 鍵除外)。
使用 find 命令搜索文本
find 命令在一個(gè)或多個(gè)文件中搜索指定文本。Windows 2000 顯示每個(gè)包含該文本的行。find 命令可以用作篩選器命令或者標(biāo)準(zhǔn)的 Windows 2000 命令。有關(guān)將 find 用作標(biāo)準(zhǔn)的 Windows 2000 命令的信息,請(qǐng)單擊“相關(guān)主題”列表中的 find。
要將 find 當(dāng)作篩選器命令使用,請(qǐng)包含小于符號(hào) (<) 和搜索的文件名。當(dāng)輸入文件名時(shí),請(qǐng)記住搜索要區(qū)分大小寫(xiě)。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串:
find "Pacific Rim" < trade.txt
要保存 find 命令的輸出而不是顯示輸出,請(qǐng)使用大于號(hào) (>) 和要存儲(chǔ)輸出的文件名。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串,并將結(jié)果保存在 Nwtrade.txt 文件中:
find "Pacific Rim" < trade.txt > nwtrade.txt
對(duì)文本文件排序
sort 命令按字母順序排列文本文件或命令的輸出。例如,可以使用以下命令對(duì) List.txt 文件的內(nèi)容進(jìn)行排序,并在屏幕上顯示結(jié)果:
sort < list.txt
在此范例中,sort 命令對(duì) List.txt 文件的行進(jìn)行排序并顯示結(jié)果,但不更改文件。要保存 sort 命令的輸出而不是顯示輸出,請(qǐng)?jiān)诿钪邪笥谔?hào) (>) 和文件名。例如,可以使用以下命令對(duì) List.txt 文件的行按字母順序排序,并將結(jié)果存到 Alphlist.txt 文件中:
sort < list.txt > alphlist.txt
要排序命令的輸出,請(qǐng)鍵入后面帶有管道 (|) 和 sort 命令的命令。例如,下面的命令對(duì) find 命令的輸出結(jié)果進(jìn)行排序:
find "Jones" maillst.txt | sort
在鍵入該命令時(shí),Windows 2000 按字母順序列出在其中出現(xiàn)“Jones”的行。
帶重定向符的合并命令
可以將篩選器命令、其他命令和文件名合并以生成自定義命令。例如,可以使用以下命令存儲(chǔ)包含“LOG”字符串的文件名:
dir /b | find "LOG" > loglist.txt
Windows 2000 通過(guò) find 過(guò)濾器命令發(fā)送 dir 命令的輸出并將包含字符串“Log”的文件名存儲(chǔ)在 Loglist.txt 文件中。將結(jié)果存儲(chǔ)為文件名列表(如,A.log、Logdat.svd 和 Mylog.bat)。
要在相同命令中使用多個(gè)篩選器,請(qǐng)使用管道 (|) 分隔篩選器。例如,下面的命令搜索 C 盤(pán)上的每個(gè)目錄以查找包含“Log”字符串的文件名,并且每次顯示一屏:
dir c:\ /s /b | find "LOG" | more
因?yàn)槭褂霉艿?nbsp;(|),Windows 2000 通過(guò) find 命令發(fā)送 dir 命令的輸出結(jié)果。find 命令只選擇包含字符串“Log”的文件名。more 命令每次一屏地顯示 find 命令選擇的文件名。
More
每次顯示一個(gè)輸出屏幕。該命令通常用于查看長(zhǎng)文件??梢詥为?dú)使用此命令,或者使用它控制其他命令的輸出,例如 type 命令。當(dāng)顯示填充可用的查看區(qū)域時(shí)將出現(xiàn) more 提示,用戶(hù)可以輸入許多命令來(lái)控制查看文件其余部分的方式。
command name | more [/c] [/p] [/s] [/tn] [+n]
more [[/c] [/p] [/s] [/tn] [+n]] < [drive:][path] filename
more [/c] [/p] [/s] [/tn] [+n] [files]
參數(shù)
[drive:][path] filename
指定要顯示的文件。
command name
指定將顯示其輸出的命令。
/c
顯示頁(yè)面前清除屏幕。
/p
擴(kuò)展換頁(yè)符。
/s
將多個(gè)空白行更改為一個(gè)空白行。
/tn
將制表位更改為 n 個(gè)空格
+n
顯示由 n 指定的行開(kāi)始的第一個(gè)文件。
files
指定要顯示的文件列表。用空格分隔文件名。
More 子命令
以下命令在 more 提示 (-- More --) 下接受。
關(guān)鍵字 操作
space 顯示下一頁(yè)。
ENTER 顯示下一行。
F 顯示下一個(gè)文件。
q 退出。
? 顯示可用命令。
= 顯示行號(hào)。
P n 顯示以下 n 行。
S n 跳過(guò)下面 n 行。
Find
在一個(gè)文件或多個(gè)文件中搜索指定的文本字符串。
當(dāng)搜索到指定的文件后,find 將顯示出包含指定字符串的所有行。
find [/v] [/c] [/n] "string" [[drive:][path]filename[...]]
參數(shù)
/v
顯示未包含指定字符串的所有行。
/c
只顯示包含指定字符串的行數(shù)。
/n
將文件行號(hào)置于每行開(kāi)頭。
/I
指定搜索不區(qū)分大小寫(xiě)。
"string"
指定要搜索的字符組。必須將 string 的文本包括在引號(hào)中。
[drive:][path] filename
指定要在其中搜索指定字符串的文件的位置和名稱(chēng)。
Sort
讀取輸入、排序數(shù)據(jù)并將結(jié)果寫(xiě)到屏幕、文件和其他設(shè)備上。
sort [/r] [/+n] [/m kilobytes] [/l locale] [/rec characters] [[drive1:][path1]filename1] [/t [drive2:][path2]] [/o [drive3:][path3]filename3]
[command |] sort [/r] [/+n] [/m kilobytes] [/l locale] [/rec characters] [[drive1:][path1]filename1] [/t [drive2:][path2]] [/o [drive3:][path3]filename3]
參數(shù)
/r
顛倒排序順序,即從 Z 到 A 排序,然后從 9 到 0 排序。
/+n
指定字符位置號(hào) n,sort 在此處開(kāi)始每次比較。例如,/+3 表示每次比較在每行的第三個(gè)字符開(kāi)始。少于 n 個(gè)字符的行在其他行之前排序。默認(rèn)情況下,比較在每行的第一個(gè)字符開(kāi)始。
/m kilobytes
指定用于排序的主內(nèi)存數(shù)量,按千字節(jié) (KB) 計(jì)。使用的內(nèi)存最小值總是 160 KB。如果指定了內(nèi)存大小,則無(wú)論有多少主內(nèi)存可用,指定的確切數(shù)量(但至少 160 KB)的內(nèi)存將用于排序。
如果輸入輸出均為文件,在沒(méi)有指定大小時(shí),默認(rèn)最大內(nèi)存大小為可用主內(nèi)存的 90%,否則為主內(nèi)存的 45%。默認(rèn)設(shè)置通常會(huì)產(chǎn)生最佳的性能。
/l locale
替代由系統(tǒng)默認(rèn)區(qū)域設(shè)置定義的字符排序順序;即在安裝 Windows 2000 時(shí)選擇的語(yǔ)言和“國(guó)家(地區(qū))”。目前,默認(rèn)區(qū)域設(shè)置唯一的備用選項(xiàng)就是“C”區(qū)域設(shè)置,該區(qū)域設(shè)置比自然語(yǔ)言排序快,根據(jù)二進(jìn)制編碼對(duì)字符排序。
/rec characters
指定記錄或輸入文件的行中的最多字符數(shù)(默認(rèn)值為 4096,最大值為 65535)。
[drive1:][path1]filename1
指定要排序的文件。如果沒(méi)有指定文件名,則對(duì)標(biāo)準(zhǔn)輸入排序。指定輸入文件比將同一文件作為標(biāo)準(zhǔn)輸入重定向速度快。
/t [drive2:][path2]
指定保留 sort 命令工作存儲(chǔ)的目錄路徑,防止數(shù)據(jù)不能裝入主內(nèi)存。默認(rèn)為使用系統(tǒng)臨時(shí)目錄。
/o [drive3:][path3]filename3
指定要存儲(chǔ)排序后的輸入的文件。如果沒(méi)有指定,數(shù)據(jù)將寫(xiě)入標(biāo)準(zhǔn)輸出。指定輸出文件比將同一文件作為標(biāo)準(zhǔn)輸出重定向速度快!
相關(guān)文章
dos命令或批處理 發(fā)生系統(tǒng)錯(cuò)誤5 拒絕訪問(wèn)
在dos下運(yùn)行net start mysql 不能啟動(dòng)mysql!提示發(fā)生系統(tǒng)錯(cuò)誤 5;拒絕訪問(wèn)! 這是因?yàn)闄?quán)限不夠的問(wèn)題。2011-03-03windows xp下沒(méi)有dos的choice命令的解決方法
dos6.0下能實(shí)現(xiàn)的choice選項(xiàng),但是因?yàn)閏hoice是外部命令,在xp中沒(méi)有choice.exe所以不能實(shí)現(xiàn)選擇菜單。解決辦法:用SET命令代替2017-03-03hh.exe 隱藏參數(shù) chm反編譯命令參數(shù)
一直都是用國(guó)外的小軟件,反編譯chm文件,沒(méi)想到用微軟自帶的其實(shí)系統(tǒng)里面就有的命令就可以實(shí)現(xiàn)了,效果也好,但就是沒(méi)有索引比較痛苦。2009-09-09在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途
這篇文章主要介紹了在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途,需要的朋友可以參考下2023-05-05BAT批處理判斷IP地址并自動(dòng)禁用啟用網(wǎng)卡
這篇文章主要介紹了BAT批處理判斷IP地址并自動(dòng)禁用啟用網(wǎng)卡,需要的朋友可以參考下2014-06-06