




已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
常用命令1.rem和:2.echo和3.pause4.title(不常用)5.color(不常用)6.errorlevel及其他常用命令的返回值(backup、diskcomp、diskcopy、format、xcopy)7.exit與goto :eof8.copy與xcopy9.del與erase10.setloacl與變量延遲(setlocal enabledelayedexpansion啟動變量延遲)11.for命令詳解12.SET語句詳解13.find和findstr在文件中搜索字符串14.replace:文件替換15.START啟動一個(gè)單獨(dú)的窗口運(yùn)行指定的程序或命令16.關(guān)閉或重啟計(jì)算機(jī):shutdown17.顯示進(jìn)程清單:tasklist18.關(guān)閉指定進(jìn)程:taskkill19.查看IP配置信息:ipconfig20.調(diào)用子過程或外部程序:call1.rem和:(注釋命令:給程序加上注解,該命令后的內(nèi)容不被執(zhí)行)Rem和:用法一樣,但關(guān)鍵區(qū)別在與“回顯”,即運(yùn)行中的命令是否被顯示;Rem可以回顯,而:則不能回顯;另外以“:”開頭的字符行,在批處理中都被視作標(biāo)號,而直接忽略其后的所有內(nèi)容;Rem在某些場合比:更為適用;同樣,rem可以用于config.sys文件中。有效標(biāo)號:冒號后緊跟一個(gè)以字母數(shù)字開頭的字符串,goto語句可以識別。無效標(biāo)號:冒號后緊跟一個(gè)非字母數(shù)字的一個(gè)特殊符號,goto無法識別的標(biāo)號,可以起到注釋作用,所以 : 常被用作注釋符號,其實(shí) :+ 也可起注釋作用。編輯于2012.6.102.echo和(打開或關(guān)閉回顯)Echo off :關(guān)閉之后命令的回顯; :關(guān)閉當(dāng)前命令的回顯;常用echo off關(guān)閉回顯;回顯:關(guān)閉回顯:Echo. :輸出空行,其中“”可以用,:;”等任一符號替代;Echo 文件內(nèi)容文件名,Echo 文件內(nèi)容文件名;Echo 提示信息。編輯與2012.6.113.pause(停止系統(tǒng)命令的執(zhí)行并顯示:請按任意鍵繼續(xù). . . )與nul的應(yīng)用如果不想顯示“請按任意鍵繼續(xù). . .”,則pause nul ,即只有光標(biāo)閃,等待下一步。Echo 其他提示語& pausenulnul 或者 1nul 作用是屏蔽成功執(zhí)行命令的輸出內(nèi)容(用于echo等其他命令之后)2nul 作用是屏蔽命令執(zhí)行失敗的輸出內(nèi)容1nul 2nul 作用是屏蔽的所有輸出提示 不論正確與否echo offecho 在批處理中回顯信息有兩個(gè)命令,echo和set /p=nul,它們的共同點(diǎn)在于都是對程序執(zhí)行信息的屏幕輸出,區(qū)別在于echo是換行輸出,而set /p=nulpauseset /p=bathomenulset /p=batmannul更新于2012.7.24.title(設(shè)置cmd窗口的標(biāo)題)title 學(xué)習(xí)之路(可以看到cmd窗口的標(biāo)題欄變了) 編輯于2012.6.115.color(不常用,設(shè)置默認(rèn)的控制臺前景和背景顏色)color attrattr 指定控制臺輸出的顏色屬性顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定:第一個(gè)為背景,第二個(gè)則為前景。每個(gè)數(shù)字可以為以下任何值之一: 0 = 黑色8 = 灰色 1 = 藍(lán)色9 = 淡藍(lán)色 2 = 綠色A = 淡綠色3 = 湖藍(lán)色B = 淡淺綠色 4 = 紅色C = 淡紅色5 = 紫色D = 淡紫色 6 = 黃色E = 淡黃色7 = 白色F = 亮白色如果沒有給定任何參數(shù),該命令會將顏色還原到 CMD.EXE 啟動時(shí)的顏色;這個(gè)值來自當(dāng)前控制臺窗口、/T 開關(guān)或 DefaultColor注冊表值;如果用相同的前景和背景顏色來執(zhí)行color命令,color命令會將errorlevel設(shè)置為1;如:color fc(在亮白色上產(chǎn)生亮紅色)編輯于2012.6.126.errorlevel(程序返回碼)及其他常用命令的返回值(backup、diskcomp、diskcopy、format、xcopy)echo %errorlevel% 每個(gè)命令運(yùn)行結(jié)束,可以用這個(gè)命令行格式查看返回碼,用于判斷剛才的命令是否執(zhí)行成功。默認(rèn)值為0,一般命令執(zhí)行出錯(cuò)會設(shè) errorlevel 為1。以下就是幾個(gè)常用命令的返回值及其代表的意義: 1)backup 0 備份成功 1 未找到備份文件 2 文件共享沖突阻止備份完成 3 用戶用ctrl-c中止備份 4 由于致命的錯(cuò)誤使備份操作中止 2)diskcomp 0 盤比較相同 1 盤比較不同 2 用戶通過ctrl-c中止比較操作 3 由于致命的錯(cuò)誤使比較操作中止 4 預(yù)置錯(cuò)誤中止比較 3)diskcopy 0 盤拷貝操作成功 1 非致命盤讀/寫錯(cuò) 2 用戶通過ctrl-c結(jié)束拷貝操作 3 因致命的處理錯(cuò)誤使盤拷貝中止 4 預(yù)置錯(cuò)誤阻止拷貝操作 4)format 0 格式化成功 3 用戶通過ctrl-c中止格式化處理 4 因致命的處理錯(cuò)誤使格式化中止 5 在提示“proceed with format(y/n)?”下用戶鍵入n結(jié)束 5)xcopy 0 成功拷貝文件 1 未找到拷貝文件 2 用戶通過ctrl-c中止拷貝操作 4 預(yù)置錯(cuò)誤阻止文件拷貝操作 5 拷貝過程中寫盤錯(cuò)誤 7.exit與goto :eof(退出腳本文件)Exit /B exitCodeExit退出cmd.exe程序或當(dāng)前批處理腳本;Exit /b退出當(dāng)前批處理腳本,而不是cmd.exe,如果是從一個(gè)批處理腳本外執(zhí)行,則會退出cmd.exe;A.在 CMD 命令提示符窗口直接運(yùn)行:1.) 運(yùn)行 Goto :eof 后,CMD 返回并將等待下一命令。 2.) 運(yùn)行 Exit 后,CMD 將直接關(guān)閉并返回到曾啟動 Cmd.exe 的程序或返回到“資源管理器”。3.) 運(yùn)行 Exit /b 后,CMD 將直接關(guān)閉并返回到曾啟動 Cmd.exe 的程序或返回到“資源管理器”。B.在批處理的最后一個(gè)執(zhí)行語句里使用:1.) 使用 Goto :eof ,雙擊該批處理,運(yùn)行完成后 CMD 窗口關(guān)閉;在 CMD 中運(yùn)行此批處理,運(yùn)行完成后 CMD 返回并將等待下一命令。2.) 使用 Exit ,雙擊該批處理,運(yùn)行完成后 CMD 窗口關(guān)閉;在 CMD 中運(yùn)行此批處理,運(yùn)行完成后 CMD 將直接關(guān)閉并返回到曾啟動 Cmd.exe 的程序或返回到“資源管理器”。3.) 使用 Exit /b ,雙擊該批處理,運(yùn)行完成后 CMD 窗口關(guān)閉;在 CMD 中運(yùn)行此批處理,運(yùn)行完成后 CMD 返回并將等待下一命令。C.在 Call 的子標(biāo)簽中:1.) 使用 Goto :eof ,將返回到 call 命令,for 也將繼續(xù)循環(huán)迭代。2.) 使用 Exit ,批處理將被直接退出,不能返回到 Call ,for 循環(huán)迭代被終止。3.) 使用 Exit /b ,將返回到 call 命令,for 也將繼續(xù)循環(huán)迭代,類似于Goto :eof。echo offfor /l %i in (1 1 3) do call :king%iPause & goto :eof:king1echo 執(zhí)行了:king1,引用goto :eof,轉(zhuǎn)for語句的下一條pausegoto :eofecho 無法顯示語句1:king2echo 執(zhí)行了:king2,引用exit /b,轉(zhuǎn)for語句的下一條pauseExit /becho 無法顯示語句2:king3echo 執(zhí)行了:king3,將直接退出pauseExitecho 無法顯示語句3D.特例:有一些情況下,在 CMD 窗口下運(yùn)行 Exit 并不是退出 CMD ,例如:在Ftp 子系統(tǒng)中,運(yùn)行 ! ,從 ftp 子系統(tǒng)臨時(shí)退出到命令提示符下,這時(shí)運(yùn)行 Exit ,將返回到 ftp 子系統(tǒng)。在命令提示符下嵌套新實(shí)例 CMD.exe 時(shí),運(yùn)行 Exit 關(guān)閉嵌套的命令行解釋器,而不是父命令行解釋器。E.關(guān)于 goto : eof (End Of File, 跳轉(zhuǎn)到批處理文件結(jié)尾)的詳解:功能:可以在不定義標(biāo)簽的情況下將控制傳送到當(dāng)前批處理腳本文件的末端。注釋: 必須滿足以下兩個(gè)條件。1.) 啟用了命令擴(kuò)展(即默認(rèn)狀態(tài))。2.) 使用 goto 和 :EOF 標(biāo)簽時(shí),必須在標(biāo)簽前插入冒號。F.關(guān)于 exit /b ExitCode 的詳解:功能: Cmd.exe 將 ERRORLEVEL 設(shè)置為指定的 ExitCode。如果退出 Cmd.exe,Cmd.exe 則使用指定的 ExitCode 設(shè)置進(jìn)程退出代碼。exitCode指定一個(gè)數(shù)字號碼,如果指定了 /B,將errorlevel設(shè)定成那個(gè)數(shù)字,如果退出cmd.exe,則用那個(gè)數(shù)字設(shè)定過程退出代碼。編輯于2012.07.158. copy與xcopycopy,中文含義為“復(fù)制”,一個(gè)很容易見名知意的命令,它的作用是復(fù)制文件,用法十分簡單:copy 源文件 目的路徑。假設(shè),你需要把d:testtest.txt這個(gè)文件復(fù)制到D盤根目錄下,那么,使用 copy d:testtest.txt d: 就可以輕易辦到。如果D盤根目錄下已經(jīng)存在了一個(gè)名為test.txt的文件,那么,復(fù)制過去的時(shí)候,copy命令就會提示你是覆蓋原文件、是放棄復(fù)制還是覆蓋所有文件。如果你在批量復(fù)制的時(shí)候,一概覆蓋原文件,那么,一個(gè)一個(gè)地選擇十分麻煩,這個(gè)時(shí)候,你可以使用不加提示就覆蓋原文件的參數(shù) /y (相當(dāng)于自動選擇了Yes選項(xiàng)),完整的命令為 copy /y d:testtest.txt d: 。如果復(fù)制的時(shí)候,你還需要把源文件改個(gè)名,比如把test.txt改為1.txt的時(shí)候,可以直接使用:copy d:testtest.txt d:1.txt 這樣的命令,也就是說,在指定目的路徑的時(shí)候,直接指定文件名,那么,新的文件名就是源文件復(fù)制之后的名字。如果要復(fù)制的路徑帶有空格、&等特殊符號的時(shí)候,請使用引號把這些特殊字符括起來,比如: copy d:test abctest.txt d:t&estcopy命令除了“復(fù)制”文件的功能外,還有一個(gè)絕活:合并多個(gè)文件為一個(gè)文件,具體的格式為:copy 文件1+文件2+文件3+ 目的路徑新文件名 。例如:copy d:test.txt+d:abc.txt d:testtest.txt,那么,就把D盤根目錄下的test.txt和abc.txt兩個(gè)文件的內(nèi)容合并為test.txt,并保存到d:test目錄下。copy 命令格式:copy /y/-y/v /Bcopy /y 不加提示,對所有文件加以覆蓋/-y 加以提示,對所有文件 (yes或no提問 )/v 拷貝以后加以校驗(yàn)/B 按二進(jìn)制進(jìn)行顯示copy w1.wps con/b 可以將wps文件在屏幕上顯示,而不必進(jìn)入wps狀態(tài)copy .98 將父目錄下的98子目錄下的所有文件全拷到當(dāng)前子目錄copy .97 當(dāng)當(dāng)前目錄下的97子目錄下文件全部拷到當(dāng)前目錄copy . c: 將當(dāng)前目錄下的所有文件拷到c盤根目錄. 意味著 *.* 文件copy nul a.abc 將a.abc 文件清空(文件長度改為0)copy 文件名+con 向文本文件中追加命令或內(nèi)容copy con 文件名 創(chuàng)建文本文件(F6存盤退出)copy con prn 檢測打印機(jī)的開關(guān) 必須注意的是,copy只能復(fù)制文件,對于文件夾的復(fù)制,則需要另請高明,動用xcopy來復(fù)制。xcopy是copy的高級版本,有更豐富的參數(shù),能實(shí)現(xiàn)更加復(fù)雜的功能,通吃文件和文件夾的復(fù)制,以后將另行介紹,在這里就不展開講解了。 9. del與erasedel命令的用法很簡單,使用 del 文件路徑 的格式就可以了。比如,想刪除D盤根目錄下的test.txt,使用del d:test.txt即可。1)如何刪除具有隱藏屬性、只讀屬性或者系統(tǒng)屬性的文件,在del后加上一些輔助參數(shù)了,隱藏屬性是hidden,使用del /a:h,只讀屬性是read,使用del /a:r,系統(tǒng)屬性是system,使用del /a:s,/a是根據(jù)屬性選擇要?jiǎng)h除的文件。因此,如果不知道文件是什么屬性,那么,使用del /a即可不過有一種情況是例外,當(dāng)文件具有只讀屬性的時(shí)候,還得添加 del /a /f 參數(shù),/f 參數(shù)表示強(qiáng)制刪除只讀屬性文件的意思,f取自force,也就是強(qiáng)制的意思。2)有段時(shí)間,威金病毒肆虐網(wǎng)絡(luò),以摧枯拉朽之勢毀滅了不少文件,其中,最關(guān)鍵的一點(diǎn)是在每個(gè)目錄下生成了一個(gè)desktop.ini文件,只要把這些desktop.ini文件刪除,這個(gè)病毒就沒有了危害性。要?jiǎng)h除每個(gè)目錄下的desktop.ini文件,如果點(diǎn)開一個(gè)個(gè)的子文件夾刪除的話,將不勝其煩,如果使用del命令,簡單的一條語句就可以搞定,那就是:在指定目錄下執(zhí)行 del /a /f /s desktop.ini 命令。在這里,/s 表示搜索當(dāng)前目錄下的所有子文件夾,并刪除指定文件的意思,s取自sub,表示“從屬的”、“子目錄的”的含義。3)在執(zhí)行刪除操作的時(shí)候,需要小心謹(jǐn)慎,如果需要在刪除之前進(jìn)行確認(rèn)的話,可以添加一個(gè)參數(shù):/p。4)如果刪除并不需要逐一確認(rèn)的,可以選擇靜默刪除模式,這時(shí)候,需要使用參數(shù):/q,也就是 quiet 的縮寫形式。10.setloacl與變量延遲(setlocal enabledelayedexpansion啟動變量延遲)讓我們先了解一下批處理運(yùn)行命令的機(jī)制:批處理讀取命令時(shí)是按行讀取的(另外,例如for命令等,其后用一對圓括號閉合的所有語句也當(dāng)作一行),在處理之前要完成必要的預(yù)處理工作,這其中就包括對該行命令中的變量賦值。而為了能夠感知環(huán)境變量的動態(tài)變化,批處理設(shè)計(jì)了變量延遲。簡單來說,在讀取了一條完整的語句之后,不立即對該行的變量賦值,而會在某個(gè)單條語句執(zhí)行之前再進(jìn)行賦值,也就是說“延遲”了對變量的賦值。舉個(gè)例子說明一下:例1: echo off set a=4 set a=5 & echo %a% pause 結(jié)果:4例2: echo off setlocal enabledelayedexpansion set a=4 set a=5 & echo !a! pause 結(jié)果:5解說:啟動了變量延遲,得到了正確答案。變量延遲的啟動語句是“setlocal enabledelayedexpansion”,并且變量要用一對嘆號“!”括起來(注意要用英文的嘆號),否則就沒有變量延遲的效果。由于啟動了變量延遲,所以批處理能夠感知到動態(tài)變化,即不是先給該行變量賦值,而是在運(yùn)行過程中給變量賦值,因此此時(shí)a的值就是5了。以上為其他給出的解釋,但個(gè)人認(rèn)為,在復(fù)合語句才會變量延遲,變量延遲的作用,說簡單點(diǎn),就是將“復(fù)合語句”拆分成“單條語句”,即實(shí)現(xiàn)了“延遲”,再進(jìn)行賦值預(yù)處理。復(fù)合語句,凡是()里的所有命令或這通過管道命令&連接起來的命令(形如 set abc=123&echo %abc%)都叫“復(fù)合語句”。在復(fù)合語句中才要使用延遲變量,cmd在處理“復(fù)合語句”的時(shí)候,如果“復(fù)合語句”中用到了變量,會把變量的值當(dāng)作復(fù)合語句之前變量的值來引用。如果在此之前變量沒有被賦值,就把它當(dāng)成空值。當(dāng)變量的值是空值的時(shí)候,只執(zhí)行echo的命令,顯示“echo處于打開狀態(tài)/echo處于關(guān)閉狀態(tài)”,而不顯示變量。當(dāng)然,如果沒有使用變量延遲,也會有如下交換的效果。 例3: echo off:目的:交換兩個(gè)變量的值,但是不使用臨時(shí)變量set var1=abcset var2=123echo 交換前:var1=%var1% var2=%var2%set var1=%var2% & set var2=%var1% 此句之前,進(jìn)行賦值var2=123echo 交換后:var1=%var1% var2=%var2% 此句之前,進(jìn)行賦值var1=123,var2=abcpause編輯于2012.7.3其他擴(kuò)展應(yīng)用,詳見“例10.變量延遲setlocal語句.bat”,請大家自己運(yùn)行,查看結(jié)果轉(zhuǎn)義字符 的用法, 將“回車”轉(zhuǎn)義成“空格”編輯于2012.7.911.for命令詳解關(guān)于%的說明:批處理中的調(diào)用變量須“%”,而在CMD中運(yùn)行該命令行只需要一個(gè)%號。基本格式:For 參數(shù) %變量名 in (相關(guān)文件或命令) do 執(zhí)行的命令rem 如果批處理中有2個(gè)%,在命令行里屏蔽1個(gè)%;如果是1個(gè)%,命令行直接屏蔽。echo 1set A=123:(A=123)set %B=345:(B=345)set %A=567:(%A=567)set %D=456:(%D=456)set %A=789:(%A=789)Pause參數(shù):FOR有4個(gè)參數(shù) /d /r /l /f%變量名:這個(gè)變量名可以是單個(gè)的小寫a-z或者大寫A-Z,區(qū)分大小寫哦,F(xiàn)OR會把每個(gè)讀取到的值給他!in:命令的格式,照寫(相關(guān)文件或命令) :For要把什么東西讀取然后賦值給變量do:命令的格式,照寫執(zhí)行的命令:對每個(gè)變量的值執(zhí)行的操作For %variable in (set) do command command-parameters%variable指定一個(gè)單一字母可替換的參數(shù)。(set) 指定一個(gè)或一組文件??梢允褂猛ㄅ浞ommand指定對每個(gè)文件執(zhí)行的命令。command-parameters為特定命令指定參數(shù)或命令行開關(guān)。一、參數(shù) /d (如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配;通配符包括*和?)FOR /D %variable IN (set) DO command command-parameters 如: echo offfor /d %i in (c:*) do echo %iPause運(yùn)行后,把C盤根目錄下的全部目錄名顯示,而文件名字一個(gè)也不顯示。二、參數(shù) /r (當(dāng)前或者你指定路徑下的文件名字全部讀取,注意是文件名字)FOR /R drive:path %variable IN (set) DO command command-parameters檢查以drive:path為根的目錄樹,指向每個(gè)目錄中的FOR 語句。如果在 /R 后沒有指定目錄,則使用當(dāng)前目錄。如果集僅為一個(gè)單點(diǎn)(.)字符,則枚舉該目錄樹。如:echo off for /r c: %i in (*.exe) do echo %i Pause我會就會看到,他把C盤根目錄,和每個(gè)目錄的子目錄下面全部的EXE文件都列出來了!用這條命令搜索文件真不錯(cuò)三、參數(shù) /l (該集表示以增量形式從開始到結(jié)束的一個(gè)數(shù)字序列)FOR /L %variable IN (start,step,end) DO command command-parameters/L 將通過對 Start# 與 End# 進(jìn)行比較來執(zhí)行迭代變量。如果 Start# 小于 End#,就會執(zhí)行該命令。如果迭代變量超過 End#,則命令解釋程序退出此循環(huán)。FOR循環(huán),前面是循環(huán)次數(shù),后面DO括號內(nèi)執(zhí)行的語句為()的一條整句,因此變量在沒有執(zhí)行賦值的情況下,F(xiàn)OR語句預(yù)處理的賦值的變量為空值,執(zhí)行echo命令,從而顯示為“echo處于打開狀態(tài)/echo處于關(guān)閉狀態(tài)”。例: echo offsetlocal enabledelayedexpansionfor /l %i in (1,1,5) do (set a=%i & echo !a!) pause相當(dāng)于(set a=1 & echo !a!set a=2 & echo !a!set a=3 & echo !a!set a=4 & echo !a!set a=5 & echo !a!)pause(1,1,5) 將產(chǎn)生序列 1 2 3 4 5,(5,-1,1) 將產(chǎn)生序列 (5 4 3 2 1)四、參數(shù) /f (使用文件解析來處理命令輸出、字符串及文件內(nèi)容)FOR /F options %variable IN (file-set) DO command command-parametersFOR /F options %variable IN (string) DO command command-parametersFOR /F options %variable IN (command) DO command command-parameters 使用迭代變量定義要檢查的內(nèi)容或字符串,并使用各種options選項(xiàng)進(jìn)一步修改解析方式。使用options令牌選項(xiàng)指定哪些令牌應(yīng)該作為迭代變量傳遞。請注意:在沒有使用令牌選項(xiàng)時(shí),/F 將只檢查第一個(gè)令牌。 文件解析過程包括讀取輸出、字符串或文件內(nèi)容,將其分成獨(dú)立的文本行以及再將每行解析成零個(gè)或更多個(gè)令牌。然后通過設(shè)置為令牌的迭代變量值,調(diào)用 for 循環(huán)。默認(rèn)情況下,/F 傳遞每個(gè)文件每一行的第一個(gè)空白分隔符號。跳過空行。eol=c- 指一個(gè)行注釋字符的結(jié)尾(就一個(gè))skip=n- 指在文件開始時(shí)忽略的行數(shù)。delims=xxx- 指分隔符集。這個(gè)替換了空格和跳格鍵的默認(rèn)分隔符集。tokens=x,y,m-n- 指每行的哪一個(gè)符號被傳遞到每個(gè)迭代的for本身。這會導(dǎo)致額外變量名稱的分配,m-n格式為一個(gè)范圍。通過 nth 符號指定 mth。如果符號字符串中的最后一個(gè)字符星號,那么額外的變量將在最后一個(gè)符號解析之后分配并接受行的保留文本。Usebackq- 使用后引號(鍵盤上數(shù)字1左面的那個(gè)鍵)。未使用參數(shù)usebackq時(shí):file-set表示文件,但不能含有空格,雙引號表示字符串,即string,單引號表示執(zhí)行命令,即command。使用參數(shù)usebackq時(shí):file-set和file-set都表示文件,當(dāng)文件路徑或名稱中有空格時(shí),就可以用雙引號括起來;當(dāng)文件路徑或名稱中有空格時(shí),就可以用雙引號括起來,單引號表示字符串,即string,后引號表示命令執(zhí)行,即command。編輯于2012.6.18五、變量延遲與FOR參數(shù)F上述已講述,變量延遲中,符合語句所引用的變量,必須用“!”括起來,實(shí)例如下:例11-2.FOR參數(shù)F與變量延遲的綜合應(yīng)用.batecho offsetlocal enabledelayedexpansionfor /f tokens=* %1 in (abaacadaaeaf)do (set A=%1set A=!A:aa=!echo !A!for /f tokens=1-3 delims= %1 in (!A!)do echo %1 %2 %3)pausenul 當(dāng)然,我們也可以不用變量延遲,通過call命令調(diào)用其他外部命令、語句,for /f tokens=* %1 in (abaacadaaeaf)do (set.=%1call set .=%.:aa=%for /f tokens=1-3 delims= %1 in (call echo %.%)do echo %1 %2 %3)pausenul 例1:代碼: for /f skip=1 tokens=1,2* delims= %a in (a.txt) do echo %a %b %c先從引號內(nèi)的東西講起,很多新手對這些難以理解,因?yàn)?for /? 翻譯的簡直是一塌糊涂。skip=tokens=delims=這三項(xiàng)是用的最多的,根據(jù)需要??梢圆挥茫梢砸黄鹗褂?,也可以只使用一個(gè)或兩個(gè)。但是不管使用幾個(gè)都要用引號將它們擴(kuò)起來。當(dāng)然不使用時(shí),自然就不需要引號了。 skip=for循環(huán)文本內(nèi)容是以行為單位,從上至下進(jìn)行的,skip=1意識就是跳過文本的第一行,即不循環(huán)第一行。那么skip=2 自然就是跳過前兩行了,依次類推. delims=后面的字符的意思是,將文本每一行的內(nèi)容以delims=后面的字符分割成若干列。例2:假設(shè)a.txt某一行的內(nèi)容是 111,222.333 444/555代碼: for /f tokens=1-5 delims=,./ %a in (a.txt) do echo %a %b %c %d %e顯示結(jié)果是 111 222 333 444 555解釋:意思就是把111,222.333 444/555以,./和空格(不分先后)分成了5列.注意代碼中/和后面有個(gè)空格,使用中要注意空格要放到最后,如delims=,. / 這樣就不行了。那如果我們不使用逗號來分割會如何呢?如: delims=./ 那么就會分割成111,222 333 444 555看出區(qū)別了嗎?delims=后面可以是多個(gè)字符,可以是空格,也可以什么都沒有。什么都沒有代表什么呢?就是不以任何東西為分割符,也是整行的內(nèi)容了。For默認(rèn)是以,;和“空格”作分割符的,所以一般要取得整行內(nèi)容通常會用delims=這樣的形式來取消for的默認(rèn)分割符。 for語句將“空格、逗號、分號、等號”視作元素分隔符例3:A1:假設(shè)令 set str=I love,bbs;,請分別顯示出I、love、bbs、bathome和net這五個(gè)字符串。目的:了解for語句用到了哪些符號作為元素的分隔符。A2:條件同A1,要求最后只顯示net這個(gè)字符串。目的:了解for語句的執(zhí)行流程。echo offset str=I love,bbs;for %i in (%str:.= %) do echo %i & set a=%iecho %a%pausenul顯示結(jié)果是tokens=1-51-5很好理解就1至5,前面我們用delims=后面的字符為分割符,將文本內(nèi)容分成了多列,那么你需要的是哪些列呢?用tokens=可以很好幫你提取到。以例2為例:通過dilims=,./ 將文本分成了111 222 333 444 555 五列。注意代碼中前面有個(gè)%a 這里的%a就是代表第一列,第二列就是%b,第三列就是%c 依此類推.那么我們?nèi)绻裡cho %a %b %c %d %e 改為 echo %e %d %c %b %a 會如何呢?會顯示: 555 444 333 222 111若是第一個(gè)%a把它改為%i也是一樣,那么第二列就是%j.%k.依此類推.這里我們用的是tokens=1-5但是在例一中,我們用的是tokens=1,2* 有什么區(qū)別呢?其實(shí)差不多-號代表從幾至幾而逗號代表單一的,如 tokens=1,5就是代表第一列和第五列,而不是1至5列。*號代表剩下的所有的列.如:tokens=1,2*代表%a為第一列,%b為第二列,%c代表后面所有的列.。for /f 不但可以循環(huán)文本內(nèi)容還可以循環(huán)字符竄,如:例4:代碼: for /f tokens=1-3 delims=,./ %a in (111,222.333 444/555) do echo %a %b %c只要將()里的字符串用引號 擴(kuò)起來,for就會把它當(dāng)字符串來循環(huán),而不是文本。編輯于2013.2.1812.SET語句詳解一、用set命令設(shè)置自定義變量(顯示、設(shè)置或刪除 cmd.exe 環(huán)境變量)1.SET variable=string(variable:指定環(huán)境變量名string:指定要指派給變量的一系列字符串)備注:由于“=”為賦值的意思,因此SET 命令不允許變量名含有等號。例1: echo offset var=我是值echo %var%pause請看 set var=我是值,這就是BAT直接在批處理中設(shè)置變量的方法!set 是命令,var是變量名,=號右邊的我是值是變量的值在批處理中,如果我們要引用或顯示var變量名,用兩個(gè)%(百分號)擴(kuò)起來,如%var%2.SET /P variable=promptStringSET可以提供一個(gè)交互界面,讓用戶自己輸入變量的值,然后再來根據(jù)這個(gè)值來做相應(yīng)操作,這種語法,只需要加一個(gè)/P參數(shù)就可以了!例2:echo offset /p var=請輸入變量的值:echo 您輸入了 %var% _pauseset /p 是命令語法,var是變量名,=號右邊的“請輸入變量的值: ”,這個(gè)是提示語,不是變量的值!運(yùn)行后,我們在提示語后面直接輸入1,就會顯示一行“您輸入了 1 _” 二、用set命令進(jìn)行簡單計(jì)算3.語法:SET /A expression(/A 命令行開關(guān)指定等號右邊的字符串為被評估的數(shù)字表達(dá)式)()-分組! - -一元運(yùn)算符= *= /= %= += -=-算數(shù)賦值&= = |= =-二進(jìn)制運(yùn)算賦值-二進(jìn)制邏輯移位& -二進(jìn)制按位“與”-二進(jìn)制按位“異” | -二進(jìn)制按位“或”,-表達(dá)式分隔符set的/A參數(shù)就是讓SET可以支持?jǐn)?shù)學(xué)符號進(jìn)行加減等一些數(shù)學(xué)運(yùn)算!例3:echo offset /p input=請輸入計(jì)算表達(dá)式:set /a var=%input%echo 計(jì)算結(jié)果:%input%=%var%pause上面的例子是龍卷風(fēng)設(shè)計(jì)的,很好用喲,請看下面幾個(gè)運(yùn)算過程:注意:DOS計(jì)算只能精確到整數(shù)* / %-算數(shù)運(yùn)算符 + -算數(shù)運(yùn)算符請輸入計(jì)算表達(dá)式:10/3計(jì)算結(jié)果:10/3=3 #DOS計(jì)算精確到整數(shù),小數(shù)舍了。請按任意鍵繼續(xù). . .請輸入計(jì)算表達(dá)式:100%3 #求余數(shù)計(jì)算結(jié)果:100%3=1請按任意鍵繼續(xù). . .請輸入計(jì)算表達(dá)式:(25+75)*2/(15+5)-20計(jì)算結(jié)果:(25+75)*2/(15+5)-20=-10請按任意鍵繼續(xù). . .注意:上面的計(jì)算過程顯示,DOS計(jì)算只能精確到32位,這個(gè)32位是指二進(jìn)制32位,其中最高位為符號位(0為正,1為負(fù)),低位31位為數(shù)值。31個(gè)1換成十進(jìn)制為2147483647,所以DOS計(jì)算的有效值范圍是-2147483648至2147483647,其中+0顯示為0,-0顯示為-2147483648;超出該數(shù)值范圍時(shí)計(jì)算出錯(cuò),請看下面的計(jì)算過程:最大值31個(gè)1加上1后,32位符號為1,所以顯示結(jié)果為-2147483648。運(yùn)行set /a a=1+1,b=2+1,c=3+1后會顯示一個(gè)4,但我們用echo %a% %b% %c%后看結(jié)果,會發(fā)現(xiàn)其他數(shù)學(xué)運(yùn)算也有效果!這就是逗號的作用!有時(shí)候我們需要直接在原變量進(jìn)行加減操作就可以用這種語法set /a var+=1 這樣的語法對應(yīng)原始語法就是set /a var = %var% + 1set /a var*=2另外還有一些用邏輯或取余操作符,比如我們在CMD里輸入set /a var=1 & 1 與運(yùn)算,他并不會顯示為1,而是報(bào)錯(cuò),為什么?對于這樣的邏輯或取余操作符,我們需要把他們用雙引號引起來,也可以用轉(zhuǎn)義字符,set /a var= 1 & 1,這樣結(jié)果就顯示出來了,其他邏輯或取余操作符用法set /a var= 1 + 1,異運(yùn)算set /a var= 1 % 1,取模運(yùn)算set /a var= 3 2,右移位運(yùn)算,4的二進(jìn)制為100,右移動2位為1,結(jié)果為1set /a var&= 1 等于set /a var = %var% & 1 注意引號思考:求任意一個(gè)數(shù)的n次方參考:例12-5SET語句的應(yīng)用:任意一個(gè)數(shù)的N次方.bat三、用set命令進(jìn)行字符串處理1、字符串替換:%PATH:str1=str2%(將字符串變量%PATH%中的str1替換為str2)例6:echo offset a= bbs. verybat. cnecho 替換前的值: %a%set var=%a: =%echo 替換后的值: %var%pause運(yùn)行顯示:替換前的值: bbs. verybat. cn替換后的值: 對比一下,我們發(fā)現(xiàn)他把變量%a%的空格給替換掉了,從這個(gè)例子,我們就可以發(fā)現(xiàn)%PATH:str1=str2%這個(gè)操作就是把變量%PATH%的里的str1全部用str2替換,比如我們把上面的例子改成這樣:echo offset a=echo 替換前的值: %a%set var=%a:.=傷腦筋%echo 替換后的值: %var%pause運(yùn)行顯示: 替換前的值: 替換后的值: bbs傷腦筋verybat傷腦筋cn解釋set var=%a:.=傷腦筋%set是命令,var是變量,a是要進(jìn)行字符替換的變量的值,.為要替換的值,傷腦筋為替換后的值!2、字符串截取:%a:m,n%方括號表示可選,%為變量標(biāo)識符,a為變量名,不可少,冒號用于分隔變量名和說明部分,符號可以簡單理解為“偏移”即可,m為偏移量(缺省為0),n為截取長度(缺省為全部)例7:echo offset a=set var=%a:1,2%echo %var%pause執(zhí)行后,我們會發(fā)現(xiàn)只顯示了bs兩個(gè)字母,我們的變量%a%的值不是為嗎?怎么只顯示了第2個(gè)字母和第3個(gè)字母bs,分析一結(jié)果我們就可以很容易看出%PATH:10,5%就是顯示變量PATH里從11位(偏移量10)開始的5個(gè)字符!分析set var=%a:1,2%,set是命令,var是變量值,a要進(jìn)行字符操作的變量,1從變量a第幾位開始顯示,2表示顯示幾位。合起來就是把變量a的值從第2位(偏移量1)開始,把2個(gè)字符賦予給變量var%PATH:-10%PATH:0,-2%例8:echo offset a=set var1=%a:-3%set var2=%a:3%set var3=%a:0,-3%set var4=%a:2,-3%echo %var1%,%var2%,%var3%,%var4%pause運(yùn)行顯示:.cn這個(gè)就是把變量a倒數(shù)3位的值給變量VAR運(yùn)行顯示:.這個(gè)就是把變量a的從第3位開始后面全部的值給變量VAR運(yùn)行顯示:bbs.verybat少了.cn,從結(jié)果分析,很容易分析出,這是把變量a的值從0位開始,到倒數(shù)第三位之間的值全部賦予給var運(yùn)行顯示:s.verybat 那么他就是顯示從第3位(偏移量2)開始減去倒數(shù)三位字符的值,并賦予給變量var講得好,例子就是說明問題,為便于記憶:a=%a:-3% “.cn” 偏移量負(fù)3,即倒數(shù)3位(也可理解為留下右邊3位),右取全部%a:3% “.” 偏移量3(也可理解為去掉左邊3位),右取全部%a:0,-3% “bbs.verybat” 偏移量0,右取長度至負(fù)3,即倒數(shù)3位%a:2,-3% “s.verybat” 偏移量2,右取長度至負(fù)3,即倒數(shù)3位所以,截取功能統(tǒng)一語法格式為:%a:m,n%方括號表示可選,%a%為變量名,不可少,冒號用于分隔變量名和說明部分,符號可以簡單理解為“偏移”即可,m為偏移量(缺省為0),n為截取長度(缺省為全部)上面所述用法其實(shí)相當(dāng)于vbs函數(shù)mid、left、right%a:0,n%相當(dāng)于函數(shù)left(a,n) 取左邊n位%a:-m%相當(dāng)于函數(shù)right(a,m) 取右邊m位%a:m,n%相當(dāng)于函數(shù)mid(a,m+1,n) 從m+1位開始取n位%a:m,-n%相當(dāng)于函數(shù)mid(a,m+1,len(a)-m-n)%a:m %相當(dāng)于函數(shù)mid(a,m+1,len(a)-m) 或者right(a,len(a)-m)思考:輸入任意字符串,求字符串的長度參考:例12-9.SET語句應(yīng)用:讀取字符串長度.bat編輯于2012.7.1513.find和findstr在文件中搜索字符串1、FIND /V /C /N /I /OFFLINE string drive:pathfilename. /V 顯示所有未包含指定字符串的行。 /C 僅顯示包含字符串的行數(shù)。 /N 顯示行號。 /I 搜索字符串時(shí)忽略大小寫。 /OFFLINE 不要跳過具有脫機(jī)屬性集的文件。 string 指定要搜索的文字串, drive:pathfilename 指定要搜索的文件。如果沒有指定路徑,F(xiàn)IND 將搜索鍵入的或者由另一命令產(chǎn)生的文字。Find常和type命令結(jié)合使用 Type drive:pathfilename | find string tmpfile #挑選包含string的行 Type drive:pathfilename | find /v string #剔除文件中包含string的行 Type drive:pathfilename | find /c #顯示文件行數(shù) 以上用法將去除find命令自帶的提示語(文件名提示)例: echo off echo 111 test.txt echo 222 test.txt find 111 test.txt del test.txt pause 運(yùn)行顯示如下: 例: echo off echo 111 test.txt echo 222 test.txt type test.txt|find 111 del test.txt pause 運(yùn)行顯示如下: 111 請按任意鍵繼續(xù). . .2、findstr,全英文find string,意為“查找字符串”;/b,(全英文begin,意為“開始”)查找以str開頭的匹配模式。/e,(全英文end,意為“末端”)查找以str結(jié)尾的匹配模式。/l,(literally,意為“照字面地”)引申為“去正則表達(dá)式”,或“普通表達(dá)式”,按字使用搜索字符串,及str不使用某些特殊意義的符號,如: $等,只把他們當(dāng)做普通符號來處理。/r,(regular,意為“有規(guī)律的”)引申為“正則表達(dá)式”,即默認(rèn)表達(dá)式模式,將搜索字符串作為正則表達(dá)式使用,可使用如: $等特殊意義的符號。/s,(subdirectory,意為“子目錄”)在當(dāng)前目錄和所有子目錄中搜索匹配文件。/i,(ignore,意為“忽略”;引申為“忽略大小寫”)指定搜索不分大小寫。/x,(ex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃幕墻供貨及安裝合同
- 銀行柜員個(gè)人工作總結(jié)
- 2024放射醫(yī)學(xué)知識題庫
- 糖尿病酮癥的護(hù)理查房
- 走出自卑心理健康
- 兒科支原體肺炎診療與護(hù)理
- 兒科臨床護(hù)理病例分享
- 自主游戲的培訓(xùn)
- 安全班委培訓(xùn)
- 裝修市場培訓(xùn)方案
- 2025年新疆中考數(shù)學(xué)試卷真題
- 2025年福建省中考語文試卷真題(含標(biāo)準(zhǔn)答案)
- 保溫材料安全管理制度
- 餐飲廢棄物管理制度
- 2025年甘肅高考物理試卷真題及答案詳解(精校打印版)
- 護(hù)士禮儀與職業(yè)素養(yǎng)課件
- 玉溪市2025年事業(yè)單位公開招聘工作人員筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025至2030中國工業(yè)電機(jī)行業(yè)市場發(fā)展現(xiàn)狀及商業(yè)模式與投資發(fā)展報(bào)告
- 國內(nèi)在線教育的發(fā)展?fàn)顩r研究論文3000字
- 合肥長鑫存儲在線測評題2024
- DL-T5153-2014火力發(fā)電廠廠用電設(shè)計(jì)技術(shù)規(guī)程
評論
0/150
提交評論