




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
批處理語法,bat語批處理就是把一批或者說是一條條命令放在一個文本里,然后批量執(zhí)行!執(zhí)行一批命令的文件的擴展名是BAT文件或者CMD,把任何一批命令放入在有這樣擴展名的文件里,執(zhí)行時里面令就會一條條的執(zhí)行完,當然我們還可以在其中加入一些邏輯判斷的語句,讓里面令在滿足一定條件時執(zhí)行指定了解了大概意思后,我們正式開始學習.先看一個簡單的例@echoecho歡迎來到BAT!"把上面的3條命令保存為test.bat或者test.cmd然后執(zhí)行,他就會在屏幕上顯示二行話:"歡迎來到非BAT!請按任意鍵繼續(xù)..."這就是一個簡單批處理文件了,我們來分析這個批處理文件一共就用了2命"echo""pause"有一個特殊符號@符號在批處理中的作用是關閉當前行命令的回顯,也就是不顯示執(zhí)行的是什么命令,只顯示命令的結(jié)果!你可以執(zhí)行下面這個批處理文件來理解,保存為*.bat或者*.CMD@echo你好echoecho命令的作用有兩個,一個是在CMD上回顯一行內(nèi)容.如:echo"歡迎來到非常還一個是關閉命令的回顯:echoechooff的作用就相當于在每條命令前面加一個@符號,這樣所有令將只會顯示結(jié)果我們echooff命令前加一個@符號是為了不讓echooff條命令本身顯示出來,讓pause命令就是暫停的意思,防止批處理執(zhí)行完后直接退出!執(zhí)行pause命令后會自動CMD顯示"請按任意鍵這樣一行話從上面這個簡單的批處理中,我們可以發(fā)現(xiàn)其實批處理就是運用一些含有特殊意義的符號和一些完成指定功能令組合而成,那么在批處理中有多少這樣的特殊符號和功能命令呢?我們現(xiàn)在就來仔細了解一下一些最常用的!(以下內(nèi)容來源網(wǎng)絡,請各位仔細閱讀,好進入下節(jié)的實例說批處理的常見命還有(FOR,SETLOCAL,SHIFT)這幾個命令比較難,不適合寫在基礎篇,以后說批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為一個可執(zhí)行的文本文件,其擴展名為BAT。1、REMREM是個注釋命令,一般用來給程序加上注解,該命令后的內(nèi)容在程序執(zhí)行時,將不會被例:REM個命令就是注釋2、ECHO一個回顯命令,主要參數(shù)有OFFON。一般用ECHOMESSAGE顯示一個特定的例EchoRem以上代表關閉回顯(就是不顯示所執(zhí)行令Echo個就是消息Rem上代表顯示“這就是消息(message)”這列字符3、GOTO會點編程的朋友就會知道這是跳轉(zhuǎn)的意在批處理中允許以“:XXX”來構建一個標號然后用GOTOXXX直接來執(zhí)行標號后令。REM面就是名為LABEL標DIRC:\DIRGOTOREM上程序跳轉(zhuǎn)標號LABEL繼續(xù)執(zhí)行4、CALL命令可以在批處理執(zhí)行過程中調(diào)用另一個批處理,當另一個批處理執(zhí)行完后,再繼例ECHO這就2內(nèi)容ECHO1內(nèi)容CALLECHO12內(nèi)容全部顯示完成。1.BAT,來看看結(jié)果:5、PAUSE,玩游戲的人都知道,暫停的意在這里就是停止系統(tǒng)命令的執(zhí)行并顯示下面的內(nèi)容。例:6、IF條件判斷語句,語法格式如下IF[NOT]ERRORLEVELnumbercommandIF[NOT]string1==string2commandIF[NOT]EXISTfilenamecommand解釋下[NOT]:將返回結(jié)果取反值,就是“如果沒有”的意是命令執(zhí)行完成后返回的退出退出值的數(shù)字取值范圍0~255,判斷時值的排列順序應該由大到返回的值大于等于指string1和string2都為字符的數(shù)英文內(nèi)字符的大小寫將看作不這個條件中的等條件相等后即執(zhí)行后面的EXIST為文件 存在的意IFERRORLEVEL個句子必須放在某一個命令的后面,執(zhí)行命令后由IFERRORLEVEL例IF[NOT]ERRORLEVELnumber檢測命令執(zhí)行完后的返回值做出判echooffdirz:rem如果退出代1(不成功)就跳至標題1處執(zhí)IFERRORLEVEL1gotoREM如果退出代0(成功)就跳至標題0處執(zhí)IFERRORLEVEL0gotoecho令執(zhí)行成功Rem程序執(zhí)行完畢跳至標題exit處退gotoecho令執(zhí)行失敗Rem程序執(zhí)行完畢跳至標題exit處退gotoRem里是程序的出IFstring1==string2檢測當前變量的值做出判ECHOIF1==2gotonoEcho變量相等!gotoexitecho量不相goto看看效果,敲擊這個命令1.bat數(shù)IF[NOT]EXISTfilename發(fā)現(xiàn)特定的文件做出判echoIFnotEXISTautoexec.batgoto1echo文件存在成功!gotoecho件不存在失敗goto這個批處理大家可以放在C盤和D盤分別執(zhí)行,看看特殊符1.2.|^&9.10.一、@這個字符在批處理中的意思是關閉當前行的回顯。我們從前幾課知ECHOOFF可以關閉掉整個批處理命令的回顯,但不能關掉ECHOOFF這個命令,現(xiàn)在我們在ECHOOFF個命令前加個@,就可以達到所有命令均不回顯的要echooffdird:\@echooffdird:\這個字符的意思是傳遞并且覆蓋,他所起的作用是將運行的回顯結(jié)果傳遞到后面的范(后邊可以是文件,也可以是默認的系統(tǒng)控制臺)比如1.txt文件內(nèi)容是使用命令:dir*.txt這時1.txt容如驅(qū)動器C中的卷沒有。卷的序列號是3827-1BDDC:2004-05-2004-05-32004-05-03文字0 339,111,936可用字三、這個符號的作用和>有點類似,但他們的區(qū)別是>>是傳遞并在文件的末尾追加,而>是覆蓋用法同內(nèi)容1+1使用命令:dir*.txt咱們來看看顯示的結(jié)果如四、這是一個管道傳輸命令,意思是將上一命令執(zhí)行的結(jié)果傳到下一個命令去處理例如:dirc:\|find以上命令是:查找C:\所有,并發(fā)現(xiàn)TXT字符串FIND功能請用FIND行查在不使format的自動格式化參數(shù)時,我是這樣來自動格式化A盤echoy|formata:/s/qformat都知道,再格盤時要y確認是否格盤,這個命令前echoy用|字符來echoy結(jié)果傳給format令從而達到自動輸入y的目(這條命令有危害性,測試時請慎重五、^是對特殊符號"<",">","&"的前導字符,在命令中他將以上3個符號的特殊功能去掉,比echotest結(jié)果則他沒有追加在1.txt里,呵呵。只是顯示了這個符號允許在一行中使用2個以上不同令,當?shù)谝粋€命令執(zhí)行失敗了,也不影響后邊令執(zhí)行。比如dirz:\&diry:\&dir以上命令會連續(xù)顯示z,y,c盤的內(nèi)容,不理會該盤是否存這個命令和上邊的類似,但區(qū)別是,第一個命令失敗時,后邊令也不會執(zhí)dirz:\&&diry:\&&dir八、雙引號允許在字符串中包含空格,進入一個特 可以用如下方cd"programfiles"cdprogra~1cd以上三種方法都可以進入programfiles這九、逗號相當于空格,在某些情況下“,”可以用來當做空格使比如十、分號,當命令相同時,可以將不同目標用;來,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯誤,則只返回錯誤報告,但程序還是會比如dir以上命令相當dirc:\dird:\dire:\dir第二節(jié)(for命令詳看了看第一節(jié)的東西,發(fā)現(xiàn)那些簡單令都有詳細解釋,實在想不出什么更好的東西來解釋他們,就直接來一個"FOR命令詳解"在其中運用這些東西來解釋吧!講FOR之前呢,咋先告訴各位新手朋友,如果你有什么命令不懂,直接在CMD下面輸入:name/?這樣的格式來看系統(tǒng)給出的幫助文件,比如for/?就會把FOR命令的幫助全部顯示出來!當然許多菜鳥都看不懂 菜鳥,把FOR命令用的方式說明下!FOR這條命令基本上都被用來處理文本,我們這次除了要說他處理文本的作用外還要講他看看他的基本格式(這里我的是批處理中的格式,直接在命令行只需要一個%號FOR參數(shù)%%變量名IN(相關文件或命令)DO執(zhí)行參數(shù):FOR4參數(shù)d/lr/f們的作用我在下面用例子解%%變量這個變量名可以是小寫a-z者大A-Z,他們區(qū)分大小寫哦~FOR會把每個到的值給他!IN:命令的格式,照寫就是了(相關文件或命令):FOR要把什么東西然后賦值給變量,不懂的話看下面的例do:命令的格式,照寫就是了執(zhí) 令:對每個變量的值要執(zhí)行什么操作就寫在這看不懂這些說明,可以在CMD輸入for/?看系統(tǒng)提供的幫助!我這里也給出來吧,大家FOR%%variableIN(set)DOcommand[command-%%variable指定一個單一字母可替換的參 指定一個或一組文件??梢允褂猛ㄅ浞?指定對每個文件執(zhí)行令command-為特定命令指定參數(shù)或命令行開關現(xiàn)在開始講每個參數(shù)的意僅Set也就是我上面相關文件或含通配符(*),將相匹配的每 (而不是指 中的文件組)執(zhí)行指定的Command這個參數(shù)其實我也沒弄太懂...有錯誤希望各位糾系統(tǒng)幫助的格式:FORDvariableINset)DO他主要用 搜索,不會搜索文件,看這樣的例@echofor/d%%iin(*)do@echo%%i把他保存放在C盤 執(zhí)行,就會把C 下的全 名字打印出來,而文件名一個也在來一個,比如我們要把當前路徑下文件夾的名字只有1-3個字母的打@echofor/d%%iin(???)do@echo%%i 名字只有1-3個字母的,就會顯示出來,沒有就不顯示這里解釋下*號和?號的作用,*號表示任意N個字符,而?號只表示任意一個字符@echofor/d%%iin(window?)do@echo%%i保存到C盤下執(zhí)行,會顯示什么呢?自己看/D參數(shù)只能顯示當 下 名字,這個大家要注意遞 樹[Drive:]Path,在樹的每個 中執(zhí)行for語句。如果在/R后沒有指 。如果Set只是一個句點(.),則只枚舉 系統(tǒng)幫助的格式:FORRdrive:]path]variableINsetDO上面我們知道,/D只能顯示當前路徑下的 名字,那么現(xiàn)在這個/R也是和 能干嘛呢?放心他比/D強大多了!他可以把當前或者你指定路徑下的文件名字全部,注意是文件名字,有什么用看例子!@echofor/rc:\%%iin(*.exe)do@echo%%i咋們把這個BAT保存到D盤隨便哪里然后執(zhí)行,我會就會看到,他把C盤根 下面全部的EXE文件都列出來了!!!!再來一@echofor/r%%iin(*.exe)do@echo%%i參數(shù)不一樣了吧!這個命令前面沒加那個C:\也就是搜索路徑,這樣他就會以當前 搜索路徑,比如你這個BAT你把他防災d:\test 下執(zhí)行,那么他就會把D:\test 的全部EXE文件列出來!!!這個參數(shù)大家因該理解了吧!還是滿好玩令!迭代數(shù)值范使用迭代變量設置起始值(Start#),然后逐步執(zhí)行一組范圍的值,直到該值超過所設的終止值(End#)。/L將通過對Start#與End#進行比較來執(zhí)行迭代變量。如果Start#End#,就會執(zhí)行該命令。如果迭代變量超過End#,則命令解釋程序退出此生成序列12345,而(5,-1,1)則生成序列(54321)。語法是:系統(tǒng)幫助的格式:forLVariableinStart#,Step#,Enddo@echoofffor/l%%iin(1,1,5)do@echo%%i保存執(zhí)行看效果,他會打123455數(shù)(1,1,5)這個參數(shù)也就是表示從1開始每次加15終止大會暈,就打印個數(shù)字有P用...好的滿足大家,看這個例@echofor/l%%iin(1,1,5)dostartcmd執(zhí)行后是不是嚇了一跳,怎么多了5個CMD窗口,呵呵!如果把那個(1,1,5)改成(1,1,65535)會有什么結(jié)果,我先告訴大家,會打開65535個CMD窗口 算你強當然我們也可以把那個startcmd改成md%%i這樣就會建立指定 了!!!名字1-看完這個被我賦予破壞性質(zhì)的參數(shù)后,我們來看最后一個參\迭代及文件解使用文件解析來處理命令輸出、字符串及文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符串,并使用各種Parsing 選項進一步修改解析方式。使用Parsing 令牌選項指定哪些令牌應該作為迭代變量傳遞。請注意:在沒有使用令牌選項時,/F將只檢查第一個令牌。解析成零個或個令牌。然后通過設置為令牌的迭代變量值,調(diào)用for循環(huán)。默認情況下,/F傳遞每個文件每一行的第一個空白分隔符號。跳過空行。系統(tǒng)幫助的格for/F "%%Variablein(FileNameSet)do有沒有發(fā)現(xiàn)這個參數(shù)說明比上面幾個都多...沒辦法,人們用FOR命令主要也就是用/f參數(shù),FOR主場啊!大家得好好看!先來解釋下那個多出來的 他表4個參 -指一個行注釋字符的結(jié)尾(就一個 -指在文件開始時忽略的行數(shù)。 -指分隔符集。這個替換了空格和跳格鍵的tokens=x,y,m-n每行的哪一個符號被傳遞到每個迭代的for本身。這會導致額外變量名稱的分配。m-n格式為一個范圍。通過nth號指mth。如果那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。 定新語法已在下類情況中使用:引號字符為文字字符串命令并允許在中使引號擴起文件名稱usebackq這個參數(shù)不用理解了,系統(tǒng)默認會給我們加上!為了能使用這個例子,我們先新建一個文本文件,在里面打上這些內(nèi)容保存為;郁悶啊您好迎來常批處理我們的完畢@echoFOR/F"eol=;tokens=1delims="%%iin(test.txt)do@echo%%i我們把這個BAT保存到和你的test.txt相同的 您好我們的為什么會這樣?我來解這個命令會在當前 下名為test.txt文件中的內(nèi)容,將每一行的內(nèi)容賦值給變量%%i,忽略掉以;號開頭的行,并且以空格做為分隔符號,打印每行以空格做分隔符號的第一列當然我們想要把全部文件內(nèi)容直接打印出來就可以這@echoFOR/F"delims="%%iin(test.txt)do@echo%%i另外/F參數(shù)還可以以輸出命令的結(jié)果看這個@echoFOR/F"delims="%%iin('netuser')do@echo%%i這樣你本機全部帳號名字就出來了把擴號內(nèi)的內(nèi)容用兩個單引號引起來就表示那個當命令執(zhí)行,FOR會返回命令的每行結(jié)果,加那個"delims="是為了讓我空格的行能整行顯示出來,不加就只顯示空格左邊一列!基本上講完了FOR的基本用法了...如果你看過FOR的系統(tǒng)幫助,你會發(fā)現(xiàn)他下面還有一本節(jié)到此結(jié)速,希望對各位有所幫第三節(jié)(FOR命令中的變FOR命令中有一些變量,他們的用法許多新手朋友還不太了解,今天給大家講解他們的用先把FOR的變量全部列出 除任何引號("),擴 I展到一個完全合格的路徑 將I展到一個驅(qū)動器 將I展到一個路 將I展到一個文件 將I展到一個文件擴 的路徑只含有 I展到文件的文件屬 I展到文件的日期/時 I展到文件的大%~$PATH:I-查找列在路徑環(huán)境變量的 ,并將%I擴展未被定義,或者沒有找到文件,此組合鍵會擴展到空字符串我們可以看到每行都有一個大寫字母"I",這個I其實就是我們在FOR帶入的變量,我FOR語句代入的變量名是什么,這里就寫什么.比如:FOR/F%%zIN('set')DO@echo%%z這里我們代入的變量名是z那么我們就要把那個Iz,例如%~fI改為%~fz至于前面的%~p樣的內(nèi)容就是語法了! 除任何引號("),擴這個變量的作用就如他的說明,刪除引號!我們來看這個例子:首先我們在桌面建立一個名字為temp.txt文本文件,在里面輸入這些內(nèi)然后在建立個BAT文件代FOR/F"delims="%%iIN(temp.txt)DO@echo%%~i和之前temp.txt中的內(nèi)容對比一下,我們會發(fā)現(xiàn)第一行和第三行的引號都了,這就是刪除引號~i作用了!刪除引號規(guī)則如下(BAT兄補1、若字符串首尾同時存在引號,則刪除首尾的引號2、若字符串尾不存在引號,則刪除字符串首的引號3、如果字符串中間存在引號,或者只在尾部存在引號,則不刪除 I展到一個完全合格的路徑名把代碼保存放在隨便哪個地方,我這里就放FOR/F"delims=="%%iIN('dir/b')DO@echo%%~fi執(zhí)行后顯示內(nèi)容C:\sandSettings\Administrator\桌面\test.batC:\sandSettings\Administrator\桌面\test.vbs當我把代碼中的%%~fi接改成%%iFOR/F"delims=="%%iIN('dir/b')DO@echo%%i執(zhí)行后就會顯示這些內(nèi)通過對比,我們很容易就看出沒有路徑了,這就是I展到一個完全合格的路徑名"也就是如果%i變量的內(nèi)容是一個文件名的話,他就會把這個文件所在的絕對路徑打印出單打印一個文件名,自己動手動實驗下就知 將I展到一個驅(qū)動器號代碼如下,我還是放到桌FOR/F"delims=="%%iIN('dir/b')DO@echo%%~di執(zhí)行后CMD里顯示如我桌面就兩個文件test.bat,test.vbs,%%~di作用是,如果變量%%i的內(nèi)容是一個文件或 或 所在的盤符號打印出來 -僅將%I擴展到一個路徑FOR/F"delims=="%%iIN('dir/b')DO@echo%%~pi我就不打結(jié)果了,大家自己代碼看結(jié)果吧,下面幾個都是這么個用法,代碼給出來,大家自己看結(jié)果吧! 將I展到一個文件名FOR/F"delims=="%%iIN('dir/b')DO@echo%%~ni 將I展到一個文件擴展名FOR/F"delims=="%%iIN('dir/b')DO@echo%%~xi 展的路徑只含有短名FOR/F"delims=="%%iIN('dir/b')DO@echo%%~si I展到文件的文件屬性FOR/F"delims=="%%iIN('dir/b')DO@echo%%~ai I展到文件的日期/時間FOR/F"delims=="%%iIN('dir/b')DO@echo%%~ti I展到文件的大小FOR/F"delims=="%%iIN('dir/b')DO@echo%%~zi%~$PATH:I-查找列在路徑環(huán)境變量的 ,并將%I擴展未被定義,或者沒有找到文件,此組合鍵會擴展到空字符串這是最后一個,和上面那些都不一樣,我單獨說說然后在把這些代碼保存為批處理,放在桌面FOR/F"delims=="%%iIN('net.exe')DO@echo%%~$PATH:i他的意思就在PATH變量里指定的路徑里搜索net,exe文件果有net.exe則會把他所好了,FOR的的變量就介紹第四節(jié)(批處理中的變批處理中的變量,我把他分為兩類,分別為"系統(tǒng)變量"和"自定義變量"我們現(xiàn)在來詳解這兩個變量!系統(tǒng)變他們的值由系統(tǒng)將其根據(jù)事先定義的條件自動賦值,也就是這些變量系統(tǒng)已經(jīng)給他們定義了值,不需要我們來給他賦值,我們只需要調(diào)用而以!我把他們?nèi)?ALLUSERSPROFILE%回“所有用戶”配置文件的位置%APPDATA%本地返回默認情況下應用程序數(shù)據(jù)的位置%CD%本地返回當 字符串%CMDCMDLINE%回用來啟動當前的Cmd.exe準確命令行%CMDEXTVERSION%系統(tǒng)返回當前令處理程序擴展”的版本號%COMPUTERNAME%回計算機的名稱%COMSPEC%回命令行解釋器可執(zhí)行程序的準確路徑%DATE%回當前日期。使datet令相同的格式。由Cmd.exe成。有date令的詳細信息,請參閱Date%ERRORLEVEL%系統(tǒng)返回上一條命令的錯誤代碼。通常用非零值表示錯誤%HOMEDRIVE%系統(tǒng)返回連接到用戶主 戶 是在“本地用戶和組”中指定的%HOMEPATH%系統(tǒng)返回用戶主 地用戶和組”中指定的%HOMESHARE%系統(tǒng)返回用戶的共享主 在“本地用戶和組”中指定的%LOGONSERVER%本地返回驗證當前登錄會話的域控制器的名%NUMBER_OF_PROCESSORS%系統(tǒng)指定安裝在計算機上的處理器的數(shù)目%OS%回操作系統(tǒng)名稱。Windows2000示其操作系統(tǒng)為Windows_NT%PATH%定可執(zhí)行文件的搜索路徑%PATHEXT%系統(tǒng)返回操作系統(tǒng)認為可執(zhí)行的文件擴展名的列%PROCESSOR_ARCHITECTURE%系統(tǒng)返回處理器的體系結(jié)構。值:x86或IA64基%PROCESSOR_IDENTFIER統(tǒng)回處理器說明%PROCESSOR_LEVEL%回計算機上安裝的處理器的型號%PROCESSOR_REVISION%回處理器的版本號%PROMPT%本地返回當前解釋程序令提示符設置。由Cmd.exe生成%RANDOM回032767間的任意十進制數(shù)字。由Cmd.exe成%SYSTEMDRIVE%系統(tǒng)返回包含Windowsserveroperatingsystem (即系統(tǒng))的驅(qū)動%SYSTEMROOT%系統(tǒng)返回Windowsserveroperatingsystem 的位置%TEMP%TMP%統(tǒng)和用回對當前登錄用戶可用的應用程序所使用的默認臨。有些應用程序需要TEMP,而其他應用程序則需要TMP%TIME%回當前時間。使timet令相同的格式。由Cmd.exe成。有time令的詳細信息,請參閱Time%USER%本地返回包含用戶帳戶的域的名稱%USERNAME回當前登錄的用戶的名%USERPROFILE地回當前用戶的配置文件的位%WINDIR%系統(tǒng)返回操作系 的位置這么多系統(tǒng)變量,我們?nèi)绾沃浪闹凳鞘裁茨?在CMD里輸入echo%WINDIR%windir變量名,不是隨便亂輸?shù)?舉個實際例子,比如我們要文件到當前帳號的啟 里就可以這copyd:\1.batUSERPROFILE%\「開始」菜單\程序\啟動%USERNAME%本地返回當前登錄的用戶的名稱。注意有空格 要用引號引起他們分別是%0%12345一直到%9有一個%0這個有點特殊,有幾層意思,先講%1-%9的意思%1回批處理的第一個%2回批處理的第二個%3-%9依此推反回批處理參數(shù)?到底怎么個返回我們看這個例子,把下面的代碼保存為test.BAT然后放到C盤@echo%1%2%3CMDcd然后輸test.bat是第一個參數(shù)是第二個參是第三個參是第四個參注意中間的空額,我們會看到這樣我是第一個參數(shù)是第二個參數(shù)是第三個參數(shù)是第四個參數(shù)我是第四個參對比下代碼,%1就是我是第一個參數(shù)%2就是我是第二個參數(shù)這些%1和%9可以讓批處理也能帶參數(shù)運行,大大提高批處理功還有一個%*是什么呢?他的作用不是很大,只是返回參數(shù)而已,不過他是一次返回全部的值,不用在輸入%1%2來確定一個個@echooffecho%*同樣保test.batCCMDcdc:\然后輸test.bat是第一個參數(shù)是第二個參是第三個參是第四個參可以看到他一次把全部參數(shù)都顯示出來好現(xiàn)在開始講那個比較特殊的%0個不是返回參數(shù)的值了,他有兩層意思!例子@echooffecho%0保存為test.BAT放在桌面運行,會顯示如下"C:\sandSettings\Administrator\桌面他把當前批處理執(zhí)行的所在路經(jīng)打印出來了,這就是返回批處理所在絕對路徑的意思第二層意思:無限循環(huán)執(zhí)行BAT例子@echooffnetuser保存BAT執(zhí)行,他就會無限循環(huán)執(zhí)行netuser這條命令,直到你手動停FOR命令中的那些就是,FOR變量已經(jīng),就不講了.現(xiàn)在說自定義變故名思意,自定義變量就是由我們來給他賦予值的變量要使用自定義變量就得使用set命令了,看例子.@echosetvar=我是值echo%var%保存BAT執(zhí)行,我們會看到CMD里返回一個"我是值var為變量名,=號右變的是要給變量的值如果我們想讓用戶手工輸入變量的值,而不是在代碼里指定,可以用用set命令的/p參例子@echoset/pvar=請輸入變量的值echo%var%var量號右邊的是提示語,不是變量的值第五節(jié)(set命令詳很久沒發(fā)貼了,今天來寫點講BAT的新學貼在上一貼中我簡單的介紹了一下SET設置自定義變量的作用,現(xiàn)在我來具體講一下set的能@echosetvar=我是echo%var%setvar=我是值這就是BAT接在批處理中設置變量的方法!set是命令var變量名=號右邊的"我是值"是變量的值在批處理中我們要這個變就把var變量名用兩個%(百分號)擴起來,如這種SET語法只能直接在BAT代碼的提前賦予變量的值,有時候我們需要提供一個交互界用戶自己輸入變量的值,然后我們在來根據(jù)這個值來做相應操作,現(xiàn)在我就來說說這的種語法,只需要加一個"/P"參數(shù)就例子@echoset/pvar=請輸入變量的ifvar1echo輸入1~_~set/p是命令語法var是變量 =號右邊的"請輸入變量的值:",這個是提示語不是量的值運行后,我們在提示語后面直接輸入1,就會顯示一行您輸入了1~_~輸入別的就沒有任映好了,先回顧到這,現(xiàn)在講SET其他功setSET的幫助我們發(fā)SET除了我上面SETSET/P這兩種語法外,還有如下幾種語SET/A環(huán)境變量替換已如下增%PATH:~-%PATH:~0,-SET/Aexpression/A令行開關指定等號右邊的字符串為被評估的數(shù)字表達式。該表達式 !~ 元運算* 數(shù)運算 數(shù)運算 輯移&位^位|位=*=/=%=+=-&=^=|=<<= 達式分隔set的/A參數(shù)就是讓SET可以支持數(shù)學符號進行加減等一些數(shù)算!現(xiàn)在開始舉例子介紹這些數(shù)學符號看例里的例子請直CMD拷貝命令運行,不需要保BAT!set/avar=1+1set/a法var量11學式拷貝運行后會直接顯示一個2,或者運行完后我們輸入echovar%,也是二,這就是set/avar=21果是多少呢?如果你看不到結(jié)echovar%.....set/avar=2*2乘法運算set/avar=22除法運set/avar=(1+11+1)結(jié)果等4得懂吧set/aa=1+1,b=2+1,c=3+1行后會顯示4,但我們echo%a%%b%%c%后看結(jié)果,會發(fā)現(xiàn)其他數(shù)算也有效果!,這就是"斗"號作用有時候我們需要直接在原變量進行加減操作就可以用這種語set/avar+=1樣的語法對應原始語法就是set/avarvar1都是一樣的結(jié)果,在原變量的值上在進行數(shù)算,不過這樣寫簡單一點set/a其他都這么用,只要幫助里有這個另外還有一些用邏輯或取余操作符,這些符號,按照上面的使用方報錯比如我CMD輸入setavar=1&1與運算",他并不會顯示為1,而是報為什么?對于這樣的"邏輯或取余操作符",我們需要把他們引號引起來,看例set/avar1&"1樣結(jié)果就顯示出來了,其他邏輯或取余操作符set/avar=1"+"1異運算set/avar=1"%"1取模運算set/avar22次方運set/avar=4">>"2這個不太記得數(shù)學里的叫法.... 這些符號也可以用&^|樣的簡單用set/avar"&1setavarvar&1注意引好符號說到這,現(xiàn)在說%PATH:str1=str2%這個是替換變量值的內(nèi)容,看例子@echosetecho換前的a%"setvar=%a:=%echo換后的var%"對比一下,我們發(fā)現(xiàn)他把變量%a%的空格給替換掉了,從這個例子,我們就可以%PATH:str1=str2%這個操作就是把變量%PATH%的里的str1全部用str2替比如我們把上面的例子改成這@echooffecho替換前的值:"%a%"setvar=%a:.=傷腦筋%echo換后的var%"setvar=%a:.=傷腦筋setvar量a要進行字符替換的變量的值,"."為要替換的值,執(zhí)行后就會把變量%a%里面的"."全部替換為"傷腦筋"這就是set的替換字符的很好的功能!先講到這%PATH:~10,5%這個什么意思,看例子@echooffsetvar=%a:~1,2%echo%var% 怎么只顯示了第2個字母和第3個字母"bs",分析一結(jié)果我們就可以很容易看%PATH:~10,5%就是顯示變PATH里指定幾位的值!setvar=%a:~1,2%setvar量a進行字符操作的變量1"從變量"a"第幾位開始顯示2"顯示和起來就是把變量a的值從第一位開始,把后兩位賦予給變量就樣因該明白了吧其他兩種語%PATH:~-%PATH:~0,-他們也是顯示指定變量指定幾位的值得的意%PATH:~-10@echooffsetvar=%a:~-3%echo%var%這個就是把變量a3位的值給當然我們也可以改成這@echooffsetvar=%a:~3%echo%var%這個就是把變量a的從3位開始后面全部的值給變量%PATH:~0,-2%@echooffsetvar=%a:~0,-3%echo%var%執(zhí)行后,我們發(fā)現(xiàn)顯示的是"bbs.verybat",少了從結(jié)果分析,很容易分析出,這是把變量a的值從0位開始,到倒數(shù)第三位之間的值全部賦予給var如果改成這@echooffsetvar=%a:~2,-3%echo%var%那么他就是顯示從第2位開始減去倒數(shù)三位字符的值,并賦予給變量這是一篇技術,真心誠意會用很簡單的文字表達清楚自己的意思,只要你識字就能看懂就能學到知識寫這篇的目的是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇的方法,就是慢!慢慢的,如同品一個女人、一杯茗茶,你會發(fā)現(xiàn)很多以前就在眼前的東西突然變的很遙遠,而有些很遙遠的東西卻又突然回到了眼前。..先概述一下批處理是個什么東東。批處理的定義,至今我也沒能給出一個合適 多高手們也都沒給出----反正我不知道---看了我也不一定信 我是個菜鳥當然更不用說了;但總結(jié)出一個“比較合適的而且我也相信自己可以把它解釋的很清楚,讓的菜鳥都知道這是個什么東東,你用這個東東可以干什么事情?;蛟S你會因為這篇文章而“無條件愛上批處理,那么目的就達到了我就是要讓你愛上它我就這么拽,你能怎么著??真的,愛有時候就這么拽,就是這么沒理由,就是這么不要臉!真的!按照理解,批處理的本質(zhì),是一堆DOS命令按一定順序排列而形成的集合OK,neverclaverandgettobusiness(閑話少說言歸正傳。批處理,也稱為批處理英文譯為BATCH批處理文件后綴BAT就取的前三個字母它的構成沒有固定格式,只要遵守以下這條就ok了每一行可視為一個命令每個命令里可以含多條子命令從第一行開始執(zhí)行直到最后一行結(jié)束它運行的平臺是DOS批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。我不想讓自己寫的枯燥無味,因為牽纏到代碼(批處理的內(nèi)容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。所以我會用很多簡單實用的例子讓讀這篇 的朋友去體會批處理的那四射的,感受它那古靈精怪的性格,不知不覺中愛上批處理(暈,怎么又是愛?到底批處理和愛有什么關系?答案:沒有DOS基礎一定要牢!當然腦子靈活也是很重要的一方面。例一、先給出一個最easy的批處理讓大家和它混個臉熟,將下面的幾行命令保存name.bat然后執(zhí)行(以后文中只給出代碼,保存和執(zhí)行方式類似 >a.txt>>a.txt>>a.txt>>a.txt>>a.txt>>a.txt>>a.txt>>a.txt是不是都能看的懂?是不是很easy?但它的作用卻是很實用的,執(zhí)行這個批處理后,可以在你的當前盤建立一個名為a.txt的文件,它里面記錄的信息可以幫助你迅速找到速度最快的服務器,從而遠離“從服務器中轉(zhuǎn)”那一痛苦的過程。這里>的意思,是把>>>前一行得出的結(jié)果的后面,具體的說是下一行,而前面一行命令得出的結(jié)果將保留,這樣可以使這個a.txt文件越來越大(想到如何搞破壞了??。Bytheway,這個批處理還可以和其令結(jié)合,搞成完全自動化判斷服務器速度的東東,執(zhí)行后直接顯示速度最快的服務器IP,是不是很爽?后面還將詳細介紹。例二、再給出一個已經(jīng)過時的例子(a.bat@echoifexistC:\Progra~1\Tencent\AD\*.gifdelC:\Progra~1\Tencent\AD\*.gif為什么說這是個過時的例子呢?很簡單因為現(xiàn)在已經(jīng)幾乎沒有人用帶的(KAO,還顯示好友三圍呢,所以它幾乎用不上了。但曾經(jīng)它的作用是不可小窺的:刪除的,讓框干干凈凈。這里用的地址是的默認安裝地址,默認批處理文件名為a.bat,你當然可以根據(jù)情況自行修改。在這個中使用了if命令,使得它可以達到適時判斷和刪除的效果,你只需要不關閉命令執(zhí)行后的DOS窗口,不按CTRL+C強行終止命令它就一直監(jiān)視是否有 (也再不斷查看自己的是學會批處理!真心想學很例三,使用批處理查是否中。內(nèi)容如下@echonetstat-a-n>typea.txt|find"7626"&&echo"Congratulations!Youhaveinfecteddela.txtpause&exit這里利用了netstat命令,檢查所有的網(wǎng)絡端口狀態(tài),只需要你清楚常見木馬所使用的端口就能很easy的判斷出來是否種了然這不是確定的因為默認的端口7626,完全可以修改。這里介紹的只是方法和思路。這里介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的了,再改動一下,加進去參數(shù)和端口及信息列表文件后,就變成自動檢測所有木馬的了。呵呵,是不是很過癮?中還利用了組合命令&&和管道命令|,后面將詳細介紹。例四,借批處理自動清除系統(tǒng),如下@echoifexistc:\windows\temp\*.*delifexistc:\windows\Tempor~1\*.*delc:\windows\Tempor~1\*.*ifexistc:\windows\History\*.*delc:\windows\History\*.*ifexistc:\windows\recent\*.*delc:\windows\recent\*.*將以上內(nèi)容保存到autoexec.bat里,每次開機時就把系統(tǒng)給自動刪除了。這里需要注意兩點:一、DOS不支持長文件名,所以就出現(xiàn)了Tempor~1這個東東;二、可根怎么樣,看到這里,你對批處 是不是已經(jīng)有點了?是不是發(fā)現(xiàn)自己已經(jīng)慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你和,當然也能讓你痛苦的想去。如果你知道很難還敢繼續(xù)的話,I服了YOU!繼續(xù)努力(酸、苦和辣,有沒有甜天知道。為什么會把批處理和愛情扯上關系?不是我無聊,也不是因為這樣寫有趣多少,原因有(我不懷疑自己的表達能力,而是事情本身就不好說清楚,說了=沒說,但用地球人都知道的愛情一比喻(愛情是什么?我**,沒準你心里一下就亮堂了,事半功倍,何樂而不為?其二,我這段時間狀態(tài)不是很好,感冒發(fā)燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫之際感慨幾句,大家就全當買狗皮膏藥了,完全可以省略不看(也許還真有點效果----不至于讓你就睡著了,把頭磕了來找我報銷費。說不定下次的中大家還會看到、等金老前輩筆下的們??催^第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來干什么的了。但你知道運用批處理的精髓在哪里嗎?其實很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點不同了,因為愛情的世界是兩個人的世界,一廂情愿不叫愛情(補充那叫單戀廢話而批處理卻是一個人的你可以沒有達不到的境界!批處理看起來雜亂無章,但它的邏輯性之強,絕對不比其他程序語言(如匯編)低,如果你寫的是一堆亂麻,雖然每一行命令都正確,但從頭執(zhí)行到尾后,不一定得到你想要的結(jié)果,也許是一屏幕的Badcommandorfailname。這又和愛情有了共同點:按步驟來經(jīng)營,缺少或增多的步驟都可能導致不想看見的結(jié)果。陷入愛河的朋友,相信沒有不肯定這句話的。愛情批處理,輸出的結(jié)果不是Badcommandorfailname,屏幕是這么顯示的‘你的愛情不是或外部命令也不是可運行的程序或批處理文件。然后就是光標不停閃動,等待這下一次錯誤的輸入。從這一章開始,將由淺入深的介紹批處理中常用令,很多常見DOS命令在批處理腳本中有這廣泛的應用它們是批處理的BODY部分但批處理比DOS更靈活多樣更DOS(相對來說)的DOS命令,常用命令如COPY、DIR等就不做介紹了(這些看似簡單令實際復雜的很,自己都說不清楚。例五先看一個實例這是一個很有意思的一個小巧實用的好東東把批處“自動化的特點體現(xiàn)的淋漓盡致先介紹一下這個的來歷大家都知道匯編程(MASM)的上機過程,先要對源代碼進行匯編、連接,然后再執(zhí)行,而這中間有很多環(huán)節(jié)需要輸(只有經(jīng)歷過的朋友才懂得編課程設計時,我“被”寫了這個,用起來很爽,呵呵??纯磧?nèi)容:@echo::closeecho::cleanechoThisprogrammeistomaketheMASMprogramme::displayechoEditby::displayechoMailtome ::displayif"%1"==""goto::ifinputwithoutparamatergotousageif"%1"=="/?"gotousage::ifparamateris"/?"gotousageif"%1"=="help"gotousage::ifparamateris"help"gotousage::pausetoseeusagemasm%1.asm::assemblethe.asmiferrorlevel1pause&edit::iferrorpausetoseeerrormsgandeditthecodelink%1.obj&%1::elselinkthe.objfileandexecutethe.exe::setechoUsage:ThisBATfilename[asmfilename]echoDefaultBATfilenameisSTART.BAT::display先不要被這一堆的東西給嚇怕了,靜下心來仔細的看(回想一下第一章中第一段是怎么E文(害怕E文的朋友也不用擔心,都很easy,一看就懂了,實在不懂了不會查詞典啊,這么懶?在執(zhí)行時不顯示也不起任何作用倒數(shù)第5行行首有一個冒號可不是筆誤哦!具體作用后面會詳細講到。此中masm和link是匯編程序和連接程序,必須和edit程序以及你要編輯的源代(當然還有這個廢話一起在當前 中使用這個批處理可以最大可能的減少手工輸入整個過程中只需要按幾下回車鍵,即可實現(xiàn)從匯編源代碼到可執(zhí)行exe文件的自動化轉(zhuǎn)換,并具備智能判斷功能:如果匯編時源代碼出現(xiàn)錯(匯編不成功則自動暫停顯示錯誤信息并在按任意鍵后自動進入編輯源代碼界面如果源代碼匯編成功則進行連接并在連接后自動執(zhí)行生成的exe文件。另外,由于批處理命令的簡單性和靈活性,這個還具備良好的可改進性,簡單進行修改就可以符合不同朋友的上機 正在學匯編的朋友一定別忘了實下!在這個中出現(xiàn)了如下幾個命令:@、echo、::、pause、:和goto、%以及if。而這一1、,這個符號大家都不陌生的必備符號它怎么會跑到批處理中呢?呵呵不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執(zhí)行窗口中不顯示它后面這一行令本身(多么繞口的一句話。呵呵,通俗一點說,行首有了它的話,這一行令就不顯示了。在例五中,首行的@echooff中,@的作用就是讓在執(zhí)行時不顯示后面的echooff部分。這下懂了吧?還是不太懂?沒關系,看完echo命令簡介,自然就懂了。,2、echoon和echooff兩個命令了。直接執(zhí)行echo命令將顯示當前echo命令狀態(tài)(off或on)執(zhí)行echooff將關閉回顯,它后面的所有命令都不顯示命令本身只顯示執(zhí)行后的結(jié)果除非執(zhí)行echoon命令在例五中首行令和echooff命令,達到了兩個目的:不顯示echooff命令本身,不顯示以后各行中的命令本身。的確是有點亂,但你要是練下的話,3分鐘包會,不會的退錢!echo命令的另一種用法一可以用它來顯示五中倒數(shù)第二行DefaultBATfilenameisSTART.BAT將在執(zhí)行后的窗口中顯示,而echo命令本身不顯示(為什??echo命令的另一種用法二:可以直接編輯文本文件。例六echonbtstat-A>a.batechonbtstat-A>>a.batechonbtstat-A>>以上內(nèi)容的編輯方法是,直接是命令行輸入,每行一回車。最后就會在當前 生成一個a.bat的文件,直接執(zhí)行就會得到結(jié)果。3這個命令的作用很簡單,它是注釋命令,在批處理中和rem命令等效。它后面的內(nèi)容在執(zhí)行時不顯示也不起任何作用因為它只是注釋只是增加了的可讀性和C語言中的/**/類似。地球人都能看懂,就不多說了。4、(看看你的workman上命令,單純、實用。它的作用,是讓當前程序進程暫停一下,并顯示一行信息:請按任意鍵繼續(xù)。在例五中這個命令運用了兩次,第一次的作用是讓使用者看清楚程序信息,第二個是顯示錯誤的匯編代碼信息(其實不是它想顯示,而是masm程序在顯示錯誤5為什么要把這兩個命令介紹?因為它們是分不開的,無論少了哪個或多了哪個都會出錯。goto是個跳轉(zhuǎn)命令,:是一個。當程序運行到goto時,將自動跳轉(zhuǎn)到:定義的部分去執(zhí)行了(是不是分不開?。例五中倒數(shù)第5行行首出現(xiàn)一個:,則程序在運行到goto時就自動跳轉(zhuǎn)到:定義的部分執(zhí)行,結(jié)果是顯示usage(usage就是名稱。不難看出,goto命令就是根據(jù)這個冒號和名稱來尋找它該跳轉(zhuǎn)的地方,它們是一一對應的關系goto命令也經(jīng)常和if命令結(jié)合使用至于這兩個命令具體用法,goto命令的另一種用法一:提前結(jié)束程序。在程序中間使用goto命令跳轉(zhuǎn)到某一,goto這里:end在最后一行其實這個例子很弱智后面講了if命令和組合命令你就知道6(多個%一起使用的情(看看例五中有多少地方用到它?,少了它批處理的功能就減少了51%了??纯蠢撸簄etuse\\%1\ipc$%3copy11.BAT\\%1\admin$\system32/ycopy13.BAT\\%1\admin$\system32/ycopyipc2.BAT\\%1\admin$\system32/ycopyNWZI.EXE\\%1\admin$\system32attrib\\%1\admin$\system32\10.bat-r-h-password執(zhí)行形式為文件名參數(shù)一參數(shù)二……假設這個被保存為a.bat,則執(zhí)行形式如下:aIPusernamepassword。這里IP、username、password是三個參數(shù),(因為程序不能正確運行,并不是因為少了參數(shù)語法就不對)這樣在執(zhí)行換1%2%和3%,這樣就達到了靈活運用的目(試想如果在中直接把IPusername和password都定義死,那么的作用也就被固定了,但如果使用%的話,不同的參數(shù)關于這個參數(shù)的使用,在后續(xù)章節(jié)中還將介紹。一定要非常熟練才行,這需要很多練習過程,需要下點狠工夫!if它不容易說清楚,下一章再講了!這一章講的這點東西,如果你是初學者,恐怕也夠消化的了。記住一句話:DOS是批處理的BODY,任何一個DOS命令都可以被用在批處理腳本中去完成特定的功能。到這里,你是否已經(jīng)想到了用自己肚子里的東西去寫點帶有自動化色彩的東東呢?很簡單,就是一個DOS命令的集合而已,相信自稱為天才的你已經(jīng)會把計算機等級考試上機試題中的DOS部分用批處理來自動化完成了。煩!就好象一個半老女人到了更年期,什么事都想嘮叨幾句,什么事都感到不舒服,看誰誰不爽。明知山有虎,偏向虎山行,最后留下一身無功而返時,才發(fā)現(xiàn)自己竟然如此脆弱,如此渺小,如此一擊。徘徊在的邊緣,突然回想起了自己最后一次扁人的那一刻,還真有點(其實我很不喜歡扁人,更不喜歡扁。我需要發(fā)泄,我用手指拼命的敲打著鍵盤,在一陣接一陣有節(jié)奏中,屏幕上出現(xiàn)了上面的這些文字??呻y道這就是發(fā)泄的另式嗎?還是厲害,早在幾千年前孔老夫子就**心,以脾氣,既然決定寫這篇,就一定會盡力去寫好,寫完美,絕對不給自己留下遺憾,要不這就不是我寫的!曾經(jīng)有一篇經(jīng)典的批處理出現(xiàn)在你的屏幕上,你沒有保存,直到找不到它的你才后悔莫及,最大的痛苦莫過于此。如果上天能給你一個再看一次的機會,你會對那篇說三個字:我愛你!如果非要給這份愛加上一個期限,你希望是100年。因為100年后,你恐怕早已經(jīng)掛了!而現(xiàn)在,你的屏幕上出現(xiàn)了這篇你正在看的批處理教程,雖然不如你曾經(jīng)看的那篇經(jīng)典,但如果勉強還過的去。你會愛它嗎?時間會有50年批處理中最重要的幾個命令,將在這一章詳細介紹,但是很遺憾,有些細節(jié)到現(xiàn)在我都沒掌握的很好,甚至還有些生分。如同還不太懂得愛一樣。但我一直都在努力,即使一直都沒有收獲。所以可能講的會比較籠統(tǒng),但我會告訴你方法,剩下的就是時間問題了,需要自己去磨練。讓我們共同努力吧。冰凍三尺非一日之寒,滴水穿石非一日之功。有些事情,比如學批處理,比如愛一個人,都是不能速成的,甚至還會有付出艱辛而收獲為甚微的情況。再次重申,看這篇的時候,一定要靜下心來,除非你已經(jīng)掌握了這篇的所有東西但那也就不必看了,浪費時間!7、接上一章,接著講if命令??偟膩碚f,if命令是一個表示判斷令,根據(jù)得出的每一、輸入判斷。還是用例五里面的那幾句if"%1"==""gotousageif"%1"=="/?"gotousageif"%1"=="help"goto這里判斷輸入的參數(shù)情況,如果參數(shù)為空(無參數(shù),則跳轉(zhuǎn)到usage;如果參數(shù)為/?或help(/?或help個看起來更像一個真正的程序,也跳轉(zhuǎn)到usage。這里還可以用否定形式來表ifnot"%1"==""gotousage,則表示如果輸入?yún)?shù)不為空就跳轉(zhuǎn)到usage()是不是很簡單?其實翻譯成中文體會一下就understand了。、存在判斷。再看例二里這句ifexistC:\Progra~1\Tencent\AD\*.gifdel如果存在那些gif文件,就刪除這些文件。當然還有例四,都是一樣的道理。注意,這里的條件判斷是判斷存在的,當然也可以判斷不存在的,例如下面這句“如果不存在那些gif文件則退出:ifnotexistC:\Progra~1\Tencent\AD\*.gifexit。只是多一個not來表示否定而已。、結(jié)果判斷。還是拿例五開刀(沒想到自己寫的,竟然用處這么大,呵呵masmiferrorlevel1pause&edit%1.asmlink%1.obj先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,并在按任意鍵后自動進入編輯界link程序連接生成的objif&命(DOS程序在運行完后都有返回碼(這里定義的錯誤碼為1(這里相應的操作為pause&edit%1.asm部分。另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變?yōu)椋簃asmifnoterrorlevel1link%1.objpause&edit%1.asm看到本質(zhì)了吧?其實只是把結(jié)果判斷后所執(zhí)行令互換了一下“ifnoterrorlevel1”和“iferrorlevel0”的效果是等效的,都表示上一句masm命令執(zhí)行成功(因為它是錯誤判斷,而且返回碼為0,0就表示否定,就是說這個錯誤不存在,就是說masm執(zhí)行成功。這里是否加not,錯誤碼到底用0還是1,是值得考慮的兩個問題,一旦搭配不成功就肯定出錯,所以一定要體會的很深刻才行。如何體會的深刻?練習!自己寫一個然后把有not和沒有not的情況返回碼為0或1的情況分別寫進去執(zhí)(怎么,嫌麻煩???排列組合算一下才四中情況你就嫌麻煩了?后面介紹管道命令和組合命,這樣從執(zhí)行的結(jié)果中就能很清楚的看出這兩種情況的區(qū)別。這種用errorlevel結(jié)果判斷的用法是if命令最難的用法,但也恰恰是最有用的用法,如果你不會用errorlevel來判斷返達到相同的效果必須用else來表否masmifexist%1.objlinkelsepause&edit關于if命令的這三種用法就say應手,主要是熟練程度的問題??赡苡械呐笥延悬c驚訝,我怎么沒給出類似下面三行的ifif/?”就能看到,我沒有必要在這里多費口舌;更重要的原因,是我覺得這樣介紹的不清if是,這三種用法的格式各不相同,而且也是不能改變的,但實際上可以互換(以為從本質(zhì)上講,這三種用法都是建立在判斷的基礎上的,哲學教我們學會透過現(xiàn)象看事物本質(zhì)。有的朋友可以自己研究一下。IF[NOT]ERRORLEVELnumberdocommandIF[NOT]string1==string2docommandIF[NOT]EXISTfilenamedocommand8、學過匯編或Ccall。在批處理中,call命令用來從一個批處理中調(diào)用另一個批處理。看例八(默認的三個文件名分別為start.bat、10.bat和ipc.batCALL10.BATECHO%IPA%.%1CALLipc.batfor/f"tokens=1,2,3delims="%%iin(%1)docallHACK.bat%%i%%j看的出來!從上面兩個,你可以得到如下信息:1、調(diào)用可以靈活運用,循環(huán)運用重復運用2調(diào)用可以使用參數(shù)關于第一點就不多說了聰明的你一看就應該會,這里說一下第二點。在start.bat10.bat后面跟了參數(shù)010.bat里的參數(shù)%1用0start.batipc.bat后面跟了參數(shù)ipcfind.tx(,執(zhí)行時的效果,就是用ipc.bat中的每一行的三個變量(這里不懂沒關系,學過for命令后就懂了,對應代換ipc.bat中的%%i、%%j和%%k。這里參數(shù)調(diào)用是非常靈活的,使用時需要好好體會。在初學期間,可以先學習只調(diào)用,至于連的參數(shù)一起使用的情況,在后面的學習中自然就會有比較深刻的理解,這是因為當你已經(jīng)可以靈活運用批處理后,如何使代碼寫的更精簡更完美更高效就自然包括到了考慮的范圍這時候你就會發(fā)現(xiàn)在調(diào)用時直接加入?yún)?shù)可以使代碼效率加倍Bytheway,上面的這幾個,都是Bat.Worm.Muma的一部分,在后面的里,大家將有機會見到這個 的 。那是不是說,在同一個下至少存在兩個批處理文件(只有一個你調(diào)用誰?)?----(默認文件名a.bat d%1Thisisacallexample.calla.bat這兩句一結(jié)合,效果自然不怎么樣,因為只有一臺機器來發(fā)消息,誰怕誰啊?我給你來10010和窗口同時向一個目標機器發(fā)消息的話,呵呵。這里calla.bat的作用就是調(diào)用自身,執(zhí)行完前一句ned命令后再調(diào)用自身,達到了循環(huán)執(zhí)行的目的。給出一個很有意思的有的朋友可以實驗一下例(默認文件名為a.batcall一定要在DOS窗口下執(zhí)行,否則只會看到一個窗口一閃而過,看不到最后結(jié)果。等執(zhí)行完后當被執(zhí)行了1260次別忘了想一下到底是為什么愛情有時候跟這個一樣,一旦陷入死循環(huán),最后的結(jié)果都是意想不到的。只是愛情,絕對不會等到被毫無理由的循環(huán)這么多次,也許在第三次時就出現(xiàn)了loveisaborted的提示。9、(我怎么突然想起了這?這個命令單獨使用的情況在批處理中是比較少見的因為沒什么實際意義。還是借例三來說明:@echonetstat-a-n>typea.txt|find"7626"&&echo"Congratulations!YouhaveinfectedGLACIER!"dela.txtpause&先用netstat命令檢查是否有默認的端口7626在活動,并把結(jié)果保存到a.txt中。然后使type令列a.txt的內(nèi)容,再在列出的內(nèi)容中搜索字符串“7626發(fā)現(xiàn)有的話則提示中了,否則退出??矗琭ind命令其實就這么簡單,但有一點必須要注意到:如果不使用type命令列出a.txt中的內(nèi)容,而是直接使用find命令在a.txt中找7626(finda.txt"7626"&&echoCongratulations!YouhaveinfectedGLACIER!",就必須得給出這個a.txt的絕對路徑(我試過了,find并沒有默認路徑就是當前路徑的功能,必須手動指定。也許是我錯了,歡迎指正。因find令的幫助里有這么一句話:如果沒有指定路徑,find搜索鍵入的或者由另一個命令產(chǎn)生的文字。這里的“另一個命令”自然就type令了。至于find命令的其他幾個參數(shù)如v、n、i等,有的朋友自己去研究吧,這已經(jīng)屬于DOS學習的內(nèi)容了這里就不做介紹關于find命令和其令的一些更精妙的用(有些簡直令人叫絕,后續(xù)的中將介紹,希望關注。10、for、set、為什么把這三個命令放到一起來講?原因除了我說明外,恐怕誰也想不到!很簡單的一句話:其實我也不太懂!是的,對于這兩個命令,我是從研究Bat.Worm.Muma開始學習的,時間過去了不少,但還是沒完全搞明白,講出來連自己都看不懂,我更怕不講錯了成了罪人。所以我給出一個去告訴你,如何讓這兩個命令給自己留一個初步的印象,其實也就是這兩個命令的入門,而并不是說如何這兩個命令。因為要如此精妙的兩個命(特別是for談何容易也許你會表揚我說我誠實不懂就不懂;也許你會罵我,讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會說一些別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說的話,我也會誓死捍衛(wèi)你說話的權利??蠢唬篅echofor/?>for.txtset/?>set.txtshift/?>shift.txt執(zhí)行后在當前路徑下就生成for.txtset.txt和shift.txtforset命令和shift上曾經(jīng)找了很長時間這三個命令的,但都不理想,基本都是照搬的幫助信息。在自己完全掌握了這兩個命令后,一定要寫一篇用自己的文字總結(jié)出來的for、set和shift(關于shift命令,后面介紹批處理的參數(shù)時還將涉及到,一定會的,這是舉了一些例子,但這是遠遠不夠的。要掌握這兩個命令,最需要的就是耐心!沒寫錯,就是耐心。光是認真看完它們的幫助文字就已經(jīng)需要足夠的耐心了,要進一步練習CALLMUMA.BATSETIPA=192.168CALL10.BAT0netstat-n|find":"FOR/F"tokens=7,8,9,10,12delims=.:"%%IIN(A.TMP)DOSETNUM1=%%I&&SETNUM2=%%J&&SETNUM3=%%K&&SETNUM4=%%L&&SETNUM5=%%M&&CALLNEAR.BATCALLSETECHOSTART>%IPA%.%NUM3%.1>B.TMP%IPA%.%NUM3%.%NUM4%>>B.TMPFIND/C/I"from"IFERRORLEVEL1GOTOSTARTCALL10.BAT%NUM3%DELA.LOGGOTOSTART這是Bat.Worm.Muma的起始,設置了運行的環(huán)境變量。是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心來,你應該能體會到學習這兩個命令所需要的耐心了吧。就如同去愛一個人,你得學會寬容,打不得罵不得,用你寬大的胸懷去包容一切,即使你發(fā)現(xiàn)愛過程如看上面代碼的過程一樣讓你頭大,但你還是得愛下去愛需要理由嗎?不需要嗎?需要嗎?不需要嗎……等到風平浪靜后,最直觀的收獲就是,你的耐心變的前所未有的充足,面對復雜和善變,你自己會處變不驚,以自己的方式去從容應付曾經(jīng)應付不了的場面,即使到最后一身,也會感慨曾經(jīng)的舉動有多么偉大。沒錯,這就是批處理的,這就是愛的。讓你受了傷還感謝傷你的人。這種感覺就好象在自己最喜歡的音樂聲中,痛并著。不得不再次重申一遍,各種DOS令是批處BODY(我實在找不出一個更合適的詞來形容他們之間的關系學好DOS命令是學好批處理的前提。其他DOS命令如copy、dir、del、type、path、break、start等命令,以及、net、cmd、at、sort、attrib、fc、find等外部命令,在批處理里的應用非常廣泛。這篇的作用,是教你認識批處理,以及如何利用DOS命令組合出來一個完美的批處理,去讓它自動完成你想要它做的事情。而靈活自如的編輯一個批處理是建立在熟練掌握DOS命令的基礎上的,不知不覺中第三章已經(jīng)結(jié)束了耳麥里傳來的依然是《比我每隔4分32秒就自動重播。雖然我不并不很喜歡,可這并不妨礙我喜歡音樂,喜歡這首描寫的如此讓人感慨的歌請你一定要比我/才不枉費我狼狽退出/再痛也不說苦/愛不用抱歉來彌補/至少我能成全你的追逐/請記得你要比我/才值得我對自己/我默默的倒數(shù)/最后再看清楚/看你眼里的我好饃糊/慢慢被放逐我如同一個因年老失色而拉不到客的老女,絕望的徘徊在曾經(jīng)輝煌的紅燈區(qū),用一臉的木然瞟一眼來來去去的人群,默默的回憶自己并不光彩的過去,幻想自己將要面對的未來。直到看見那些依偎在一起的情侶們,才突然間發(fā)現(xiàn)上帝的公平,和這種公平的??梢哉f,批處理中最重要的幾個命令我都沒有給出如echo或if那樣比較詳細的介紹,原因我已經(jīng)說了,因為我也是個菜,我也不太懂但我正在學!你呢?今了一趟館淘金一樣發(fā)現(xiàn)了一本《DOS批文件的東東藏在一個角落里落滿了灰,思講,已經(jīng)有點timeout了,很多東西已經(jīng)基本沒有利用的價值(這就是信息時代的更新速度一番,連同那幾個不熟悉令一起搞熟了,再續(xù)寫這篇。我始終堅信,沒有最好只有更好。但是很可惜,等到下午再去的時候,館樓梯口已經(jīng)立了一個牌子,上面寫著outof 人家這學期的工作結(jié)束了。于是回到宿舍打算繼續(xù)寫第四章,正在這時又到一個“振奮人心”的消息:期末考試有一科掛了,而且是全班第 這一門整個里就掛了我一個。郁悶的情緒剎那間涌上心頭,整個世界仿佛都變成黑的了。和小賣部已經(jīng)陸續(xù)關門,學校里的人越來越少,迎面過來的幾個同學也都一身行李,忙碌著準備回家過年,內(nèi)心的孤寂和失落如同夏日里暴雨前的烏云,迅速而不可抗拒的占領了心里每一個角落。迎著一月的冷風我一個人在天橋上發(fā)呆,還能怎么樣,連期末考試都應付不了?!罢n間休息”時間好象長了點,呵呵,上課了!從這一章開始,將詳細介紹批處理中常用的幾個組合命令和管道命令。這些命令雖然不是必須的,如同愛一個人時不一定非得每天去陪,但如果少了這個過程,事情就會變的復雜而不完美,所以我認為管道命令和組合命令是批處理的調(diào)味劑,幾乎是少不了的。下面從管道命令講起。常用的管道命令有以下這些:|11、這個命令恐怕大家不是很陌生,經(jīng)常操作DOS的朋友都應該知道,當我們查看一個命令的幫助時,如果幫助信息比較長,一屏幕顯示不完時DOS并不給我們時間讓我們看完一屏幕再翻到另一直接顯示到幫助信息的最如在提示符下輸入help回車時,就會看到當前DOS版本所支持的所有非隱含命令,但你只能看到最后的那些命令,前面help|回車后會發(fā)現(xiàn)顯示滿一屏幕后就自動暫停,等候繼續(xù)顯示其他信息。當按寫回車時,變成一個一個的出現(xiàn);按下空格鍵時一屏幕一屏幕顯示,直到全部顯示完為止;按其他鍵自動停止返回DOS。為什么會出現(xiàn)上述現(xiàn)象?答案很簡單,這里結(jié)合了管道命令|DOSmore共同達到目的這里先簡單介紹一下help命令和more命令對理解|命令的用法有很特殊,直接在DOS提示符下輸入help命令,結(jié)果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help命令,如輸入nethelp回車,則是顯示net命令的幫助信息。、more命令??赡芎芏嗯笥岩郧熬蜎]有接觸過這個命令,這個命令在Linux下的用(a.txt在DOS提示符下輸入如下兩個命令去比較一下差別:morea.txt和typea.txt。利用more命令,可typemore命令的作用就是讓輸出的信息逐屏或逐行顯示。|help命令執(zhí)行后顯示的DOSmore以例十三和下面的例十四是等效的help>a.txtmorea.txtdela.txt這里利用另一管道命令>生成了一個a.txt文件作為中間環(huán)節(jié)在用more命令查看a.txt文件后再刪除a.txt文件(例十三的所有操作是在內(nèi)存中進行的,不生成文件。可以看|12>會清除掉原有文件中的內(nèi)容后把新的內(nèi)容寫入原文件,而>>只會另起一行追加新的內(nèi)容到原文件中,而不會改動其中的原有內(nèi)容。例十五:echo@echooff>echoechoThisisapipelinecommandexample.>>a.batechoechoItisveryeasy?>>a.batechoechoBelieveyourself!>>a.batechopause>>a.batechoexit>>依次在DOS提示符下輸入以上各行命令一行一個回車將在當 下生成一個文件,里面的內(nèi)容如下@echoechoThisisapipelinecommandexample.echoItisveryeasy?echoBelieveyourself!看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的寫入功能編輯一個文本,而不需要專門的文本編輯工具;2、管道命令>和>>的區(qū)別如上所述。如果這里只用>命令來完成上面操作,最后也會生成一個a.bat,但里面的內(nèi)容就只剩下最后一行exit了。所以>和>>一般都用,除非你重定向的輸出只有一行,那么就可以只用>了。結(jié)合例一再仔細體會輸出重定向管道命令>和>>的用法。13、<、>&、這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當然如果想<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入>&,將一個句柄的輸出寫入到另一個句柄的輸入中<&,剛好和>&相反,從一個句柄輸入并將其寫入到另一個句柄輸出中關于這三個管道命令的舉例,在后面批處理的精妙應用中還將涉及到。下面介紹組合命令:&、&&、||組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執(zhí)行。這在批處理腳本里是允許的而且用的非常廣泛它的格式很簡單 既然現(xiàn)在已經(jīng)成了一個文件了,那么這多個命令就要用這些組合命令連接起來放在同一 因為批處理認行不認命數(shù)目。組合命令的作用,就如同給愛人陪不是,說一句是說,說十句也是說,不好話都說了出來,效果可能會好 當然得排除一種特殊情況:這些話是否有先后序,有些話是否可以同時說。在批處理里也一樣,有些時候某些命令是不能同時執(zhí)行的,后面給你說。剛剛又送走了一個同學,人去樓空的感覺越來越明顯,望著空蕩蕩的床鋪,平日里喧鬧的宿舍就只剩下我一個人了,整個世界只有那個平時令人非常討厭的老鼠這時候才顯得可愛起來----只有它會陪著我在這不敢開燈的漆黑夜里----期末考試都應付不了。失敗!我感到快要呼吸不過來,這種失敗的壓力簡直令我窒息,簡直讓我的手接收不到大腦的信號,簡直讓這篇未完成的夭折。但我能怪誰?忙碌了一學期要過年了卻掛了科,失敗;掛了科也倒罷了,竟然一個人拖全班的后退,失敗中;更失敗的,是在這最失落的時候,竟然找不到一個人可以傾訴;然而最失敗的,是突然發(fā)現(xiàn)自己竟然如此脆弱,如此耐不住寂寞。不過這倒也解開了心中疑惑很久的一個問題:為什么明知道那段情是一個旋渦卻還心甘情愿的往里面跳這就是青春,風一樣的,火一樣不安的心。不再愛了,我不要再一個人的時候苦苦等待;不再愛了,我不要在你給的籠里憐憫的愛;不再愛了,我不要在別人的視線里如此可笑;不再愛,我不再愛。就算塌下來,我也要一個人,頭不能低腰不能彎,不能喘息不能傾訴,因為雖然失敗,但還是,是就不能向低頭!14、這可以說是最簡單的一個組合命令了,它的作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西方國家的經(jīng)濟政策與政治考量試題及答案
- 教育政策中的公平與效率問題探討試題及答案
- 探討西方國家的科技與治理關系試題及答案
- 機電系統(tǒng)集成考題及答案
- 西方國家意識形態(tài)的變遷分析試題及答案
- 機電工程加工工藝試題及答案
- 軟考網(wǎng)絡工程師綜合素質(zhì)試題及答案分析
- 項目收尾與總結(jié)階段試題及答案
- 如何促進政府決策的透明與開放試題及答案
- 社會保障政策考試試題及答案
- 國際檔案日宣傳教育課件(帶內(nèi)容)
- 基于PLC的藥房取藥系統(tǒng)設計
- 安徽省汽車維修行業(yè)車輛維修合同
- GB/T 16447-2004煙草及煙草制品調(diào)節(jié)和測試的大氣環(huán)境
- 公司勞務派遣人員工資薪酬發(fā)放暫行規(guī)定
- 建筑大師伊東豐雄簡介及作品集課件
- 公司二次經(jīng)營創(chuàng)效管理實施細則
- BRCGS食品安全全球標準第9版全套程序文件
- 2023年福建省高一數(shù)學競賽試題參考答案
- 2023年最新的馬季吹牛相聲臺詞
- 一年級英語下冊素材-Unit 1 Lets count!課文翻譯 譯林版(一起)
評論
0/150
提交評論