批處理命令學(xué)習(xí)資料【完美版】_第1頁
批處理命令學(xué)習(xí)資料【完美版】_第2頁
批處理命令學(xué)習(xí)資料【完美版】_第3頁
批處理命令學(xué)習(xí)資料【完美版】_第4頁
批處理命令學(xué)習(xí)資料【完美版】_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

最全批處理命令學(xué)習(xí)資料【完美版】一:批處理文件批處理文件是擴(kuò)展名為·bat或·cmd的文本文件,包含一條或多條命令,由DOS或Windows系統(tǒng)內(nèi)嵌的命令解釋器來解釋運(yùn)行。批處理的本質(zhì),是一堆DOS命令按一定順序排列而形成的集合。二:常用命令:echo和@:@#關(guān)閉單行回顯echooff#從下一行開始關(guān)閉回顯@echooff#從本行開始關(guān)閉回顯,一般批處理第一行都是這個(gè)echoon#從下一行開始打開回顯echo#顯示當(dāng)前是echooff狀態(tài)還是echoon狀態(tài)echo.#輸出一個(gè)”回車換行”,空白行#(同echo,echo;echo+echo[echo]echo/echo")errorlevel echo %errorlevel%每個(gè)命令運(yùn)行結(jié)束,可以用這個(gè)命令行格式查看返回碼默認(rèn)值為0,一般命令執(zhí)行出錯(cuò)會(huì)設(shè)errorlevel為1目錄操作類命令:dir 顯示磁盤目錄命令dir#顯示當(dāng)前目錄中的文件和子目錄dir/a#顯示當(dāng)前目錄中的文件和子目錄,包括隱藏文件和系統(tǒng)文件dirc:/a:d#顯示C盤當(dāng)前目錄中的目錄dirc:/a:-d#顯示C盤根目錄中的文件dirc:"/b/p#/b只顯示文件名,/p分頁顯示dirc:"/b/p#/w不顯示詳細(xì)信息dir*.exe/s#顯示當(dāng)前目錄和子目錄里所有的.exe文件以樹形顯示當(dāng)前路徑文件夾結(jié)構(gòu)tree/f#顯示每個(gè)文件夾中文件的名字。5.md 建立子目錄mdd:"a"b"c#如果d:"a不存在,將會(huì)自動(dòng)創(chuàng)建中級(jí)目錄#如果命令擴(kuò)展名被停用,則需要鍵入mkdir"a"b"c6.cd 改變當(dāng)前目錄(進(jìn)入)cd\#進(jìn)入根目錄cd#顯示當(dāng)前目錄cd/dd:\sdk#可以同時(shí)更改盤符和目錄cd..#返回上一級(jí)目錄7.rd 刪除子目錄命令rdabc#刪除當(dāng)前目錄里的abc子目錄,要求為空目錄rd/s/qd:\temp#刪除d:"temp文件夾及其子文件夾和文件/q安靜模式磁盤操作類命令:8.format 磁盤格式化命令9.chkdsk 檢查磁盤當(dāng)前狀態(tài)命令10.label 建立磁盤卷標(biāo)命令11.vol 顯示磁盤卷標(biāo)命令文件操作類命令:copy 文件復(fù)制命令copyc:\test.txtd:\test.bak復(fù)制c:\test.txt文件到d:\,并重命名為test.bakcopycontest.txt從屏幕上等待輸入,按Ctrl+Z結(jié)束輸入,輸入內(nèi)容存為test.txt文件con代表屏幕,prn代表打印機(jī),nul代表空setp=aaaif%p%==aaa(echo%p%setp=bbbecho!p!)ENDLOCAL結(jié)果將顯示aaabbb還有幾個(gè)動(dòng)態(tài)變量,運(yùn)行set看不到%CD% #代表當(dāng)前目錄的字符串%DATE% #當(dāng)前日期%TIME% #當(dāng)前時(shí)間%RANDOM% #隨機(jī)整數(shù),介于0~32767%ERRORLEVEL% #當(dāng)前ERRORLEVEL值%CMDEXTVERSION% #當(dāng)前命令處理器擴(kuò)展名版本號(hào)%CMDCMDLINE% #調(diào)用命令處理器的原始命令行可以用echo命令查看每個(gè)變量值,如echo%time%注意%time%精確到毫秒,在批處理需要延時(shí)處理時(shí)可以用到[變量大全]系統(tǒng)變量:系統(tǒng)將其根據(jù)事先定義的條件自動(dòng)賦值,也就是系統(tǒng)已經(jīng)給他們定義了值,不需要我們來給他賦值,我們只需要調(diào)用。%ALLUSERSPROFILE%本地返回“所有用戶”配置文件的位置。%APPDATA%本地返回默認(rèn)情況下應(yīng)用程序存儲(chǔ)數(shù)據(jù)的位置。%CD%本地返回當(dāng)前目錄字符串。%CMDCMDLINE%本地返回用來啟動(dòng)當(dāng)前的Cmd.exe的準(zhǔn)確命令行。%CMDEXTVERSION%系統(tǒng)返回當(dāng)前的“命令處理程序擴(kuò)展”的版本號(hào)。%COMPUTERNAME%系統(tǒng)返回計(jì)算機(jī)的名稱。%COMSPEC%系統(tǒng)返回命令行解釋器可執(zhí)行程序的準(zhǔn)確路徑。%DATE%系統(tǒng)返回當(dāng)前日期。使用與date/t命令相同的格式。由Cmd.exe生成。%ERRORLEVEL%系統(tǒng)返回上一條命令的錯(cuò)誤代碼。通常用非零值表示錯(cuò)誤。%HOMEDRIVE%系統(tǒng)返回連接到用戶主目錄的本地工作站驅(qū)動(dòng)器號(hào)?;谥髂夸浿刀O(shè)置。用戶主目錄是在“本地用戶和組”中指定的。%HOMEPATH%系統(tǒng)返回用戶主目錄的完整路徑?;谥髂夸浿刀O(shè)置。用戶主目錄是在“本地用戶和組”中指定的。%HOMESHARE%系統(tǒng)返回用戶的共享主目錄的網(wǎng)絡(luò)路徑?;谥髂夸浿刀O(shè)置。用戶主目錄是在“本地用戶和組”中指定的。%LOGONSERVER%本地返回驗(yàn)證當(dāng)前登錄會(huì)話的域控制器的名稱。%NUMBER_OF_PROCESSORS%系統(tǒng)指定安裝在計(jì)算機(jī)上的處理器的數(shù)目。%OS%系統(tǒng)返回操作系統(tǒng)名稱。Windows2000顯示其操作系統(tǒng)為Windows_NT。%PATH%系統(tǒng)指定可執(zhí)行文件的搜索路徑。%PATHEXT%系統(tǒng)返回操作系統(tǒng)認(rèn)為可執(zhí)行的文件擴(kuò)展名的列表。%PROCESSOR_ARCHITECTURE%系統(tǒng)返回處理器的芯片體系結(jié)構(gòu)。%PROCESSOR_IDENTFIER%系統(tǒng)返回處理器說明。%PROCESSOR_LEVEL%系統(tǒng)返回計(jì)算機(jī)上安裝的處理器的型號(hào)。%PROCESSOR_REVISION%系統(tǒng)返回處理器的版本號(hào)。%PROMPT%本地返回當(dāng)前解釋程序的命令提示符設(shè)置。由Cmd.exe生成。%RANDOM%系統(tǒng)返回0到32767之間的任意十進(jìn)制數(shù)字。由Cmd.exe生成。%SYSTEMDRIVE%系統(tǒng)返回包含Windowsserveroperatingsystem根目錄(即系統(tǒng)根目錄)的驅(qū)動(dòng)器。%SYSTEMROOT%系統(tǒng)返回Windowsserveroperatingsystem根目錄的位置。%TEMP%和%TMP%系統(tǒng)和用戶返回對(duì)當(dāng)前登錄用戶可用的應(yīng)用程序所使用的默認(rèn)臨時(shí)目錄。%TIME%系統(tǒng)返回當(dāng)前時(shí)間。使用與time/t命令相同的格式。由Cmd.exe生成。%USERDOMAIN%本地返回包含用戶帳戶的域的名稱。%USERNAME%本地返回當(dāng)前登錄的用戶的名稱。%USERPROFILE%本地返回當(dāng)前用戶的配置文件的位置。%WINDIR%系統(tǒng)返回操作系統(tǒng)目錄的位置。pause 暫停命令if 判斷命令ifERRORLEVELnumbercommand #判斷命令是否正確運(yùn)行通常情況下,命令執(zhí)行成功后,系統(tǒng)變量ERRORLEVEL會(huì)被設(shè)置成0,若命令失敗,或遇到非法命令,系統(tǒng)變量ERRORLEVEL會(huì)被設(shè)置成非0。ifstring1==string2command #判斷某兩個(gè)字符串是否相等ifexitfilenamecommand #判斷驅(qū)動(dòng)器、文件或文件夾是否存在ifdefinedvarcommand #判斷某個(gè)變量是否已經(jīng)被賦值if1equ2 #判斷某兩個(gè)數(shù)值是否相等EQU #等于 ==NEQ #不等于 !=LSS #小于 <LEQ #小于或等于 <=GTR #大于 >GEQ #大于或等于 >=注: #ELSE子句必須出現(xiàn)在同一行上的IF之后Example:if""%1""==""/a""echo第一個(gè)參數(shù)是/aif/i""%1""equ""/a""echo第一個(gè)參數(shù)是/a/i表示不區(qū)分大小寫,equ和==是一樣的其它運(yùn)算符參見if/?ifexistc:\test.batecho存在c:\test.bat文件ifnotexistc:\windows(echo不存在c:"windows文件夾)ifexistc:\test.bat(echo存在c:\test.bat)else(echo不存在c:\test.bat)ifexist文件名待執(zhí)行的命令如果有指定的文件,則條件成立,運(yùn)行命令,否則運(yùn)行下一句。如ifexistconfig.syseditconfig.sysiferrorlevel/ifnoterrorlevel數(shù)字待執(zhí)行的命令如果返回碼等于指定的數(shù)字,則條件成立,運(yùn)行命令,否則運(yùn)行下一句。如iferrorlevel2gotox2call 命令 調(diào)用子程序CALL[drive:][path]filename[batch-parameters]batch-parameters指定批處理程序所需的命令行信息(參數(shù))。exit命令 退出命令for循環(huán)/F #分塊提取文件/D #顯示當(dāng)前目錄下所有指定的目錄名稱/R #枚舉文件和目錄/L #計(jì)次循環(huán)子參數(shù):tokens(塊)、delims(分塊標(biāo)志)、eol(忽略行)、skip(跳過行)、userbackq(支持長路徑名)CMD窗口中:for%Iin(command1)docommand2批處理中:for%%Iin(command1)docommand21、for、in和do是for語句的關(guān)鍵字,它們?nèi)齻€(gè)缺一不可;2、%%I是for語句中對(duì)形式變量的引用,就算它在do后的語句中沒有參與語句的執(zhí)行,也是必須出現(xiàn)的;3、in之后,do之前的括號(hào)不能省略;4、command1表示字符串或變量,command2表示字符串、變量或命令語句;@echoofffor%%Iin()doecho%%Ipause1、for語句的形式變量I,可以換成26個(gè)字母中的任意一個(gè),這些字母會(huì)區(qū)分大小寫,也就是說,%%I和%%i會(huì)被認(rèn)為不是同一個(gè)變量;形式變量I還可以換成其他的字符,但是,為了不與批處理中的%0~%9這10個(gè)形式變量發(fā)生沖突,請不要隨意把%%I替換為%%0~%%9中的任意一個(gè);2、in和do之間的command1表示的字符串或變量可以是一個(gè),也可以是多個(gè),每一個(gè)字符串或變量,我們稱之為一個(gè)元素,每個(gè)元素之間,用空格鍵、跳格鍵、逗號(hào)、分號(hào)或等號(hào)分隔;3、for語句依次提取command1中的每一個(gè)元素,把它的值賦予形式變量I,帶到do后的command2中參與命令的執(zhí)行;并且每次只提取一個(gè)元素,然后執(zhí)行一次do后的命令語句,而無論這個(gè)元素是否被帶到command2中參與了command2的運(yùn)行;當(dāng)執(zhí)行完一次do后的語句之后,再提取command1中的下一個(gè)元素,再執(zhí)行一次command2,如此循環(huán),直到command1中的所有元素都已經(jīng)被提取完畢,該for語句才宣告執(zhí)行結(jié)束;Example:for/f"tokens=1delims="%%ain(test.txt)do(echo%%a)取第1行并顯示for/f"tokens=1,2delims="%%ain(test.txt)do(echo%%a%%b)取1,2行并顯示for/f"tokens=1-3delims="%%ain(test.txt)do(echo%%a%%b%%c)取1到3行并顯示for/f"tokens=2,3,*delims="%%ain(test.txt)do(echo%%a%%b%%c)取2,3行并顯示for/f"eol=!tokens=*"%%ain(test.txt)do(echo%%a)忽略!開頭的行并顯示for/f"skip=3tokens=*"%%ain(test.txt)do(echo%%a)忽略前三行并顯示for/d%%ain(pro*,doc*)do(echo%%a)顯示以pro開頭的目錄名稱,顯示以doc開頭的目錄名稱for/r%systemroot%%%ain(*.tmp)do(echo%%a)顯示root目錄下后綴名為.tmp的文件及目錄seti=0for/l%%ain(1,1,100)do(set/ai+=1)echo結(jié)算結(jié)果:%i%(變量起始值,每次遞加的步長,終止值)for/f"usebackq"%%ain("C:\ProgramFiles\jksing.txt")do(echo%%a)顯示jksing中的內(nèi)容,若去掉usebackq,則輸出C:\Programfor/r%%iin(*.txt)do(echo%%~fi)for%%iin(c:d:e:f:)doecho%%i依次調(diào)用小括號(hào)里的每個(gè)字符串,執(zhí)行do后面的命令注意%%i,在批處理中for語句調(diào)用參數(shù)用2個(gè)%默認(rèn)的字符串分隔符是""空格鍵"",""Tab鍵"",""回車鍵""for%%iin(*.txt)dofind""abc""%%i對(duì)當(dāng)前目錄里所有的txt文件執(zhí)行find命令for/r.%%iin(*.txt)dofind""abc""%%i在當(dāng)前目錄和子目錄里所有的.txt文件中搜索包含abc字符串的行for/r.%%iin(.)doecho%%~pn顯示當(dāng)前目錄名和所有子目錄名,包括路徑,不包括盤符for/rd:"mp3%%iin(*.mp3)doecho%%i>>d:"mp3.txt把d:"mp3及其子目錄里的mp3文件的文件名都存到d:"mp3.txt里去for/l%%iin(2,1,8)doecho%%i生成2345678的一串?dāng)?shù)字,2是數(shù)字序列的開頭,8是結(jié)尾,1表示每次加1for/f%%iin('set')doecho%%i對(duì)set命令的輸出結(jié)果循環(huán)調(diào)用,每行一個(gè)for/f""eol=P""%%iin('set')doecho%%i取set命令的輸出結(jié)果,忽略以P開頭的那幾行for/f%%iin(d:"mp3.txt)doecho%%i顯示d:"mp3.txt里的每個(gè)文件名,每行一個(gè),不支持帶空格的名稱for/f""delims=""%%iin(d:"mp3.txt)doecho%%i顯示d:"mp3.txt里的每個(gè)文件名,每行一個(gè),支持帶空格的名稱for/f""skip=5tokens=4""%%ain('dir')doecho%%a對(duì)dir命令的結(jié)果,跳過前面5行,余下的每行取第4列每列之間的分隔符為默認(rèn)的""空格""可以注意到dir命令輸出的前5行是沒有文件名的for/f""tokens=1,2,3delims=-""%%ain('date/t')do(echo%%aecho%%becho%%c)對(duì)date/t的輸出結(jié)果,每行取1、2、3列第一列對(duì)應(yīng)指定的%%a,后面的%%b和%%c是派生出來的,對(duì)應(yīng)其它列分隔符指定為-和""空格"",注意delims=-后面有個(gè)""空格""其中tokens=1,2,3若用tokens=1-3替換,效果是一樣的for/f""tokens=2*delims=-""%%ain('date/t')doecho%%b取第2列給%%a,其后的列都給%%b參數(shù)%0%1%2%3%4%5%6%7%8%9%*i%%命令行傳遞給批處理的參數(shù)%0 #批處理文件本身%1 #第一個(gè)參數(shù)%9 #第九個(gè)參數(shù)%* #從第一個(gè)參數(shù)開始的所有參數(shù)參數(shù)擴(kuò)展:%~1 #刪除引號(hào)(""),擴(kuò)充%1%~f1 #將%1擴(kuò)充到一個(gè)完全合格的路徑名%~d1 #僅將%1擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào)%~p1 #僅將%1擴(kuò)充到一個(gè)路徑%~n1 #僅將%1擴(kuò)充到一個(gè)文件名%~x1 #僅將%1擴(kuò)充到一個(gè)文件擴(kuò)展名%~s1 #擴(kuò)充的路徑指含有短名%~a1 #將%1擴(kuò)充到文件屬性%~t1 #將%1擴(kuò)充到文件的日期/時(shí)間%~z1 #將%1擴(kuò)充到文件的大小%~$PATH #查找列在PATH環(huán)境變量的目錄,并將%1擴(kuò)充到找到的第一個(gè)完全合格的名稱。如果環(huán)境變量名未被定義,或者沒有找到文件,此組合鍵會(huì)擴(kuò)充到空字符串可以組合修定符來取得多重結(jié)果:%~dp1 #只將%1擴(kuò)展到驅(qū)動(dòng)器號(hào)和路徑%~nx1 #只將%1擴(kuò)展到文件名和擴(kuò)展名%~dp$PATH: #在列在PATH環(huán)境變量中的目錄里查找%1,并擴(kuò)展到找到的第一個(gè)文件的驅(qū)動(dòng)器號(hào)和路徑%~ftza1 #將%1擴(kuò)展到類似DIR的輸出行find 查找命令(外部命令)在文件中搜索字符串find""abc""c:"test.txt在c:"test.txt文件里查找含abc字符串的行如果找不到,將設(shè)errorlevel返回碼為1find/i“abc”c:"test.txt查找含abc的行,忽略大小寫find/c""abc""c:"test.txt顯示含abc的行的行數(shù)more 逐屏顯示輸出morec:"test.txt#逐屏顯示c:"test.txt的文件內(nèi)容assoc和ftype文件關(guān)聯(lián)assoc設(shè)置'文件擴(kuò)展名'關(guān)聯(lián),關(guān)聯(lián)到'文件類型'ftype設(shè)置'文件類型'關(guān)聯(lián),關(guān)聯(lián)到'執(zhí)行程序和參數(shù)'當(dāng)你雙擊一個(gè).txt文件時(shí),windows并不是根據(jù).txt直接判斷用notepad.exe打開而是先判斷.txt屬于txtfile'文件類型'再調(diào)用txtfile關(guān)聯(lián)的命令行txtfile=%SystemRoot%"system32"NOTEPAD.EXE%1可以在""文件夾選項(xiàng)""→""文件類型""里修改這2種關(guān)聯(lián)assoc#顯示所有'文件擴(kuò)展名'關(guān)聯(lián)assoc.txt#顯示.txt代表的'文件類型',結(jié)果顯示.txt=txtfileassoc.doc#顯示.doc代表的'文件類型',結(jié)果顯示.doc=Word.Document.8assoc.exe#顯示.exe代表的'文件類型',結(jié)果顯示.exe=exefileftype#顯示所有'文件類型'關(guān)聯(lián)ftypeexefile#顯示exefile類型關(guān)聯(lián)的命令行,結(jié)果顯示exefile=""%1""%*assoc.txt=Word.Document.8設(shè)置.txt為word類型的文檔,可以看到.txt文件的圖標(biāo)都變了assoc.txt=txtfile恢復(fù).txt的正確關(guān)聯(lián)ftypeexefile=""%1""%*恢復(fù)exefile的正確關(guān)聯(lián)如果該關(guān)聯(lián)已經(jīng)被破壞,可以運(yùn)行,再輸入這條命令pushd和popd切換當(dāng)前目錄@echooffc:&cd"&mdmp3 #在C:"建立mp3文件夾mdd:"mp4 #在D:"建立mp4文件夾cd/dd:"mp4 #更改當(dāng)前目錄為d:"mp4pushdc:"mp3 #保存當(dāng)前目錄,并切換當(dāng)前目錄為c:"mp3popd #恢復(fù)當(dāng)前目錄為剛才保存的d:"mp4subst 映射磁盤substz:"server"d#這樣輸入z:就可以訪問"server"d了substz:/d#取消該映射subst#顯示目前所有的映時(shí)常用特殊符號(hào):1.@ #命令行回顯屏蔽符2.% #批處理變量引導(dǎo)符3.> #重定向符4.>> #重定向符5.<,>&,<& #重定向符6.| #命令管道符7.^ #轉(zhuǎn)義字符8.& #組合命令9.&& #組合命令10.|| #組合命令11."" #字符串界定符詳細(xì)介紹:% 批處理變量引導(dǎo)符>,>> 重定向符>清除文件中原有的內(nèi)容后再寫入>>追加內(nèi)容到文件末尾,而不會(huì)清除原有的內(nèi)容主要將本來顯示在屏幕上的內(nèi)容輸出到指定文件中指定文件如果不存在,則自動(dòng)生成該文件Example:echohello>1.txtechoworld>>1.txt這時(shí)候1.txt內(nèi)容如下:helloworldtypec:"test.txt>prn屏幕上不顯示文件內(nèi)容,轉(zhuǎn)向輸出到打印機(jī)echohelloworld>con在屏幕上顯示helloworld,實(shí)際上所有輸出都是默認(rèn)>con的copyc:"test.txtf:>nul拷貝文件,并且不顯示""文件復(fù)制成功""的提示信息,但如果f盤不存在,還是會(huì)顯示出錯(cuò)信息copyc:"test.txtf:>nul2>nul不顯示”文件復(fù)制成功”的提示信息,并且f盤不存在的話,也不顯示錯(cuò)誤提示信息echo^^W^>^W>c:"test.txt生成的文件內(nèi)容為^W>W^和>是控制命令,要把它們輸出到文件,必須在前面加個(gè)^符號(hào)<,>&,<& 重定向符< 從文件中獲得輸入信息,而不是從屏幕上,一般用datetimelabel等需要等待輸入的命令>& 將一個(gè)句柄的輸出寫入到另一個(gè)句柄的輸入中<& 剛好和>&相反,從一個(gè)句柄讀取輸入并將其寫入到另一個(gè)句柄輸出中Example:@echooffecho2005-05-01>temp.txtdate<temp.txtdeltemp.txt這樣就可以不等待輸入直接修改當(dāng)前日期常用句柄:0、1、2,未定義句柄:3—91>nul表示禁止輸出正確的信息2>nul表示禁止輸出錯(cuò)誤信息。其中的1與2都是代表某個(gè)數(shù)據(jù)流輸入輸出的地址(NTCMD稱之為句柄,MSDOS稱之為設(shè)備)。句柄0:標(biāo)準(zhǔn)輸入stdin,鍵盤輸入句柄1:標(biāo)準(zhǔn)輸出stdout,輸出到命令提示符窗口(console,代碼為CON)句柄2:標(biāo)準(zhǔn)錯(cuò)誤stderr,輸出到命令提示符窗口(console,代碼為CON)其中的stdin可被<重定向,stdout可被>、>>重定向。我們已經(jīng)知道讀取文本中的內(nèi)容可以用for命令,但如果只需要讀取第一行用for命令就有點(diǎn)麻煩。簡單的辦法如下:@echooffset/pstr=<%0echo%str%pause運(yùn)行顯示批處理文件自身的第一行:@echooff&,&&,|| 組合命令&、&&、||為組合命令,顧名思義,就是可以把多個(gè)命令組合起來當(dāng)一個(gè)命令來執(zhí)行。這在批處理腳本里是允許的,而且用的非常廣泛。因?yàn)榕幚碚J(rèn)行不認(rèn)命令數(shù)目。&:語法:第一條命令&第二條命令[&第三條命令...]&允許在一行中使用2個(gè)以上不同的命令,當(dāng)?shù)谝粋€(gè)命令執(zhí)行失敗了,也不影響后邊的命令執(zhí)行。這里&兩邊的命令是順序執(zhí)行的,從前往后執(zhí)行。比如:dirz:\&diry:\&dirc:\以上命令會(huì)連續(xù)顯示z,y,c盤的內(nèi)容,不理會(huì)該盤是否存在&&:語法:第一條命令&&第二條命令[&&第三條命令...]用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行出錯(cuò)的命令后將不執(zhí)行后面的命令,如果一直沒有出錯(cuò)則一直執(zhí)行完所有命令這個(gè)命令和上邊的類似,但區(qū)別是,第一個(gè)命令失敗時(shí),后邊的命令也不會(huì)執(zhí)行dirz:\&&diry:\&&dirc:\||:語法:第一條命令||第二條命令[||第三條命令...]用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)一條命令失敗后才執(zhí)行第二條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令;提示:組合命令和重定向命令一起使用必須注意優(yōu)先級(jí)管道命令的優(yōu)先級(jí)高于重定向命令,重定向命令的優(yōu)先級(jí)高于組合命令|命令管道符格式:第一條命令|第二條命令[|第三條命令...]將第一條命令的結(jié)果作為第二條命令的參數(shù)來使用,記得在unix中這種方式很常見。例如:dir*.*/s/a|find/c"".exe""管道命令表示先執(zhí)行dir命令,對(duì)其輸出的結(jié)果執(zhí)行后面的find命令該命令行結(jié)果:輸出當(dāng)前文件夾及所有子文件夾里的.exe文件的個(gè)數(shù)typec:"test.txt|more這個(gè)和morec:"test.txt的效果是一樣的dirc:\|find"txt"以上命令是:查找C:\所有,并發(fā)現(xiàn)TXT字符串。FIND的功能請用FIND/?自行查看在不使format的自動(dòng)格式化參數(shù)時(shí),我是這樣來自動(dòng)格式化A盤的echoy|formata:/s/q/v:system用過format的都知道,再格盤時(shí)要輸入y來確認(rèn)是否格盤,這個(gè)命令前加上echoy并用|字符來將echoy的結(jié)果傳給format命令從而達(dá)到自動(dòng)輸入y的目的^轉(zhuǎn)義字符^是對(duì)特殊符號(hào)<,>,&的前導(dǎo)字符,在命令中他將以上3個(gè)符號(hào)的特殊功能去掉僅只把他們當(dāng)成符號(hào)而不使用他們的特殊意義。Example:echotest^>1.txt結(jié)果則是:test>1.txt他沒有追加在1.txt里,只是顯示了出來另外,此轉(zhuǎn)義字符還可以用作續(xù)行符號(hào)。@echooffecho英雄^是^好^男人pause為什么轉(zhuǎn)義字符放在行尾可以起到續(xù)行符的作用呢?原因很簡單,因?yàn)槊啃心┪策€有一個(gè)看不見的符號(hào),即回車符,轉(zhuǎn)義字符位于行尾時(shí)就讓回車符失效了,從而起到了續(xù)行的作用""字符串界定符雙引號(hào)允許在字符串中包含空格,進(jìn)入一個(gè)特殊目錄可以用如下方法cd"programfiles"cdprogra~1cdpro*以上三種方法都可以進(jìn)入programfiles這個(gè)目錄;分號(hào)分號(hào),當(dāng)命令相同時(shí),可以將不同目標(biāo)用;來隔離但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯(cuò)誤則只返回錯(cuò)誤報(bào)告,但程序仍會(huì)執(zhí)行。(有人說不會(huì)繼續(xù)執(zhí)行,其實(shí)測試一下就知道了)比如:dirc:\;d:\;e:\;z:\以上命令相當(dāng)于dirc:\dird:\dire:\dirf:\如果其中z盤不存在,運(yùn)行顯示:系統(tǒng)找不到指定的路徑。然后終止命令的執(zhí)行。例:dirc:\;d:\;e:\1.txt以上命令相當(dāng)于dirc:\dird:\dire:\1.txt其中文件e:\1.txt不存在,但e盤存在,有錯(cuò)誤提示,但命令仍會(huì)執(zhí)行。如果目標(biāo)路徑不存在,則終止執(zhí)行;如果路徑存在,僅文件不存在,則繼續(xù)執(zhí)行。()括號(hào)小括號(hào)在批處理編程中有特殊的作用,左右括號(hào)必須成對(duì)使用括號(hào)中可以包括多行命令,這些命令將被看成一個(gè)整體,視為一條命令行括號(hào)在for語句和if語句中常見,用來嵌套使用循環(huán)或條件語句,其實(shí)括號(hào)()也可以單獨(dú)使用,請看例子。Example:echo1&echo2&echo3可以寫成:(echo1echo2echo3)上面兩種寫法效果一樣,這兩種寫法都被視為是一條命令行。注意:這種多條命令被視為一條命令行時(shí),如果其中有變量,就涉及到變量延遲的問題!感嘆號(hào)在變量延遲問題中,用來表示變量,即%var%應(yīng)該表示為!var!DOS編程高級(jí)技巧:一、交互界面設(shè)計(jì)沒啥說的,看看高手設(shè)計(jì)的菜單界面吧:@echooffclstitle終極多功能修復(fù):menuclscolor0Aecho.echo==============================echo請選擇要進(jìn)行的操作,然后按回車echo==============================echo.echo1.網(wǎng)絡(luò)修復(fù)及上網(wǎng)相關(guān)設(shè)置,修復(fù)IE,自定義屏蔽網(wǎng)站echo.echo2.病毒專殺工具,端口關(guān)閉工具,關(guān)閉自動(dòng)播放echo.echo3.清除所有多余的自啟動(dòng)項(xiàng)目,修復(fù)系統(tǒng)錯(cuò)誤echo.echo4.清理系統(tǒng)垃圾,提高啟動(dòng)速度echo.echoQ.退出echo.echo.:chosetchoice=set/pchoice=請選擇:IFNOT"%choice%"==""SETchoice=%choice:~0,1%if/i"%choice%"=="1"gotoipif/i"%choice%"=="2"gotosetsaveif/i"%choice%"=="3"gotokaijiif/i"%choice%"=="4"gotocleanif/i"%choice%"=="Q"gotoenddecho選擇無效,請重新輸入echo.gotocho只要學(xué)完本教程前面的章節(jié),上面的程序應(yīng)該能看懂了。二、if…else…條件語句前面已經(jīng)談到,DOS條件語句主要有以下形式IF[NOT]ERRORLEVELnumbercommandIF[NOT]string1==string2commandIF[NOT]EXISTfilenamecommand增強(qiáng)用法:IFstring1compare-opstring2command增強(qiáng)用法中加上/I就不區(qū)分大小寫了!增強(qiáng)用法中還有一些用來判斷數(shù)字的符號(hào):EQU-等于NEQ-不等于LSS-小于LEQ-小于或等于GTR-大于GEQ-大于或等于上面的command命令都可以用小括號(hào)來使用多條命令的組合,包括else子句,組合命令中可以嵌套使用條件或循環(huán)命令。例如:IFEXISTfilename(delfilename)ELSE(echofilenamemissing)也可寫成:ifexistfilename(delfilename)else(echofilenamemissing)但這種寫法不適合命令太多或嵌套命令的使用。三、循環(huán)語句1、指定次數(shù)循環(huán)FOR/L%variableIN(start,step,end)DOcommand[command-parameters]組合命令:FOR/L%variableIN(start,step,end)DO(Command1Command2……)2、對(duì)某集合執(zhí)行循環(huán)語句。FOR%%variableIN(set)DOcommand[command-parameters]%%variable指定一個(gè)單一字母可替換的參數(shù)。(set)指定一個(gè)或一組文件??梢允褂猛ㄅ浞?。command對(duì)每個(gè)文件執(zhí)行的命令,可用小括號(hào)使用多條命令組合。FOR/R[[drive:]path]%variableIN(set)DOcommand[command-parameters]檢查以[drive:]path為根的目錄樹,指向每個(gè)目錄中的FOR語句。如果在/R后沒有指定目錄,則使用當(dāng)前目錄。如果集僅為一個(gè)單點(diǎn)(.)字符,則枚舉該目錄樹。同前面一樣,command可以用括號(hào)來組合:FOR/R[[drive:]path]%variableIN(set)DO(Command1Command2……commandn)3、條件循環(huán)上面的循環(huán)結(jié)構(gòu)是用for命令來實(shí)現(xiàn)的,for命令循環(huán)有一個(gè)缺點(diǎn),就是整個(gè)循環(huán)被當(dāng)作一條命令語句,涉及到變量延遲的問題。利用goto語句和條件判斷,dos可以實(shí)現(xiàn)條件循環(huán),很簡單啦,看例子:例:@echooffsetvar=0rem************循環(huán)開始了:continueset/avar+=1echo第%var%次循環(huán)if%var%lss100gotocontinuerem************循環(huán)結(jié)束了echo循環(huán)執(zhí)行完畢pause例:@echooffsetvar=100rem************循環(huán)開始了:continueecho第%var%次循環(huán)set/avar-=1if%var%gtr0gotocontinuerem************循環(huán)結(jié)束了echo循環(huán)執(zhí)行完畢pause四、子程序在批處理程序中可以調(diào)用外部可運(yùn)行程序,比如exe程序,也可調(diào)用其他批處理程序,這些也可以看作子程序,但是不夠方便,如果被調(diào)用的程序很多,就顯得不夠簡明了,很繁瑣。在windowsXP中,批處理可以調(diào)用本程序中的一個(gè)程序段,相當(dāng)于子程序,這些子程序一般放在主程序后面。子程序調(diào)用格式:CALL:labelarguments子程序語法::labelcommand1command2commandngoto:eof在子程序段中,參數(shù)%0指標(biāo)簽:label子過程一般放在最后,并且注意在主程序最后要加上exit或跳轉(zhuǎn)語句,避免錯(cuò)誤的進(jìn)入子過程。子程序和主程序中的變量都是全局變量,其作用范圍都是整個(gè)批處理程序。傳至子程序的參數(shù)在call語句中指定,在子程序中用%1、%2至%9的形式調(diào)用,而子程序返回主程序的數(shù)據(jù)只需在調(diào)用結(jié)束后直接引用就可以了,當(dāng)然也可以指定返回變量,請看下面的例子。子程序例1:@echooffcall:subreturn你好echo子程序返回值:%return%pause:subset%1=%2goto:eof運(yùn)行結(jié)果:你好子程序例2:設(shè)計(jì)一個(gè)求多個(gè)整數(shù)相加的子程序@echooffsetsum=0call:subsum102035echo數(shù)據(jù)求和結(jié)果:%sum%pause:subrem參數(shù)1為返回變量名稱set/a%1=%1+%2shift/2ifnot"%2"==""gotosubgoto:eof運(yùn)行結(jié)果:65在win98系統(tǒng)中,不支持上面這種標(biāo)號(hào)調(diào)用,須將子程序單獨(dú)保存為一個(gè)批處理程序,然后調(diào)用。五、用ftp命令實(shí)現(xiàn)自動(dòng)下載ftp是常用的下載工具,ftp界面中有40多個(gè)常用命令,自己學(xué)習(xí)了,不介紹了。這里介紹如何用dos命令行調(diào)用ftp命令,實(shí)現(xiàn)ftp自動(dòng)登錄,并上傳下載,并自動(dòng)退出ftp程序。其實(shí)可以將ftp命令組合保存為一個(gè)文本文件,然后用以下命令調(diào)用即可。ftp-n-s:[[drive:]path]filename上面的filename為ftp命令文件,包括登錄IP地址,用戶名、密碼、操作命令等例:open#打開ipuseriware#用戶為iwarepassword8848#密碼bin#二進(jìn)制傳輸模式promptcdtmp1#切換至iware用戶下的tmp1目錄pwdlcdd:\download#本地目錄mget*#下載tmp1目錄下的所有文件bye#退出ftp六、用7-ZIP實(shí)現(xiàn)命令行壓縮和解壓功能語法格式:(詳細(xì)情況見7-zip幫助文件,看得頭暈可以跳過,用到再學(xué))7z<command>[<switch>...]<base_archive_name>[<arguments>...]7z.exe的每個(gè)命令都有不同的參數(shù)<switch>,請看幫助文件<base_archive_name>為壓縮包名稱<arguments>為文件名稱,支持通配符或文件列表其中,7z是至命令行壓縮解壓程序7z.exe,<command>是7z.exe包含的命令,列舉如下:a:Addsfilestoarchive.添加至壓縮包a命令可用參數(shù):-i(Include)-m(Method)-p(SetPassword)-r(Recurse)-sfx(createSFX)-si(useStdIn)-so(useStdOut)-ssw(Compresssharedfiles)-t(Typeofarchive)-u(Update)-v(Volumes)-w(WorkingDir)-x(Exclude)b:Benchmarkd:Deletesfilesfromarchive.從壓縮包中刪除文件d命令可用參數(shù):-i(Include)-m(Method)-p(SetPassword)-r(Recurse)-u(Update)-w(WorkingDir)-x(Exclude)e:Extract解壓文件至當(dāng)前目錄或指定目錄e命令可用參數(shù):-ai(Includearchives)-an(Disableparsingofarchive_name)-ao(Overwritemode)-ax(Excludearchives)-i(Include)-o(SetOutputDirectory)-p(SetPassword)-r(Recurse)-so(useStdOut)-x(Exclude)-y(AssumeYesonallqueries)l:Listscontentsofarchive.t:Testu:Updatex:eXtractwithfullpaths用文件的完整路徑解壓至當(dāng)前目錄或指定目錄x命令可用參數(shù):-ai(Includearchives)-an(Disableparsingofarchive_name)-ao(Overwritemode)-ax(Excludearchives)-i(Include)-o(SetOutputDirectory)-p(SetPassword)-r(Recurse)-so(useStdOut)-x(Exclude)-y(AssumeYesonallqueries)七、調(diào)用VBScript程序使用Windows腳本宿主,可以在命令提示符下運(yùn)行腳本。CScript.exe提供了用于設(shè)置腳本屬性的命令行開關(guān)。用法:CScript腳本名稱[腳本選項(xiàng)...][腳本參數(shù)...]選項(xiàng)://B批模式:不顯示腳本錯(cuò)誤及提示信息//D啟用ActiveDebugging//E:engine使用執(zhí)行腳本的引擎//H:CScript將默認(rèn)的腳本宿主改為CScript.exe//H:WScript將默認(rèn)的腳本宿主改為WScript.exe(默認(rèn))//I交互模式(默認(rèn),與//B相對(duì))//Job:xxxx執(zhí)行一個(gè)WSF工作//Logo顯示徽標(biāo)(默認(rèn))//Nologo不顯示徽標(biāo):執(zhí)行時(shí)不顯示標(biāo)志//S為該用戶保存當(dāng)前命令行選項(xiàng)//T:nn超時(shí)設(shè)定秒:允許腳本運(yùn)行的最長時(shí)間//X在調(diào)試器中執(zhí)行腳本//U用Unicode表示來自控制臺(tái)的重定向I/O“腳本名稱”是帶有擴(kuò)展名和必需的路徑信息的腳本文件名稱,如d:\admin\vbscripts\chart.vbs?!澳_本選項(xiàng)和參數(shù)”將傳遞給腳本。腳本參數(shù)前面有一個(gè)斜杠(/)。每個(gè)參數(shù)都是可選的;但不能在未指定腳本名稱的情況下指定腳本選項(xiàng)。如果未指定參數(shù),則CScript將顯示CScript語法和有效的宿主參數(shù)。八、將批處理轉(zhuǎn)化為可執(zhí)行文件:由于批處理文件是一種文本文件,任何人都可以對(duì)其進(jìn)行隨便編輯,不小心就會(huì)把里面的命令破壞掉,所以如果將其轉(zhuǎn)換成.com格式的可執(zhí)行文件,不僅執(zhí)行效率會(huì)大大提高,而且不會(huì)破壞原來的功能,更能將優(yōu)先級(jí)提到最高。Bat2Com就可以完成這個(gè)轉(zhuǎn)換工作。小知識(shí):在DOS環(huán)境下,可執(zhí)行文件的優(yōu)先級(jí)由高到低依次為.com>.exe>.bat>.cmd,即如果在同一目錄下存在文件名相同的這四類文件,當(dāng)只鍵入文件名時(shí),DOS執(zhí)行的是,如果需要執(zhí)行其他三個(gè)文件,則必須指定文件的全名,如name.bat。這是一個(gè)只有5.43K大小的免費(fèi)綠色工具,可以運(yùn)行在純DOS或DOS窗口的命令行中,用法:Bat2ComFileName,這樣就會(huì)在同一目錄下生成一個(gè)名為FileN的可執(zhí)行文件,執(zhí)行的效果和原來的.bat文件一樣。九、時(shí)間延遲本條參考引用[英雄]教程什么是時(shí)間延遲?顧名思義,就是執(zhí)行一條命令后延遲一段時(shí)間再進(jìn)行下一條命令。延遲的應(yīng)用見下節(jié):“模擬進(jìn)度條”。1、利用ping命令延時(shí)例:@echooffecho延時(shí)前:%time%ping/n3>nulecho延時(shí)后:%time%pause解說:用到了ping命令的“/n”參數(shù),表示要發(fā)送多少次請求到指定的ip。本例中要發(fā)送3次請求到本機(jī)的ip()??珊唽憺?27.1?!?gt;nul”就是屏蔽掉ping命令所顯示的內(nèi)容。2、利用for命令延時(shí)例:@echooffecho延時(shí)前:%time%for/l%%iin(1,1,5000)doecho%%i>nulecho延時(shí)后:%time%pause解說:原理很簡單,就是利用一個(gè)計(jì)次循環(huán)并屏蔽它所顯示的內(nèi)容來達(dá)到延時(shí)的目的。3、利用vbs延遲函數(shù),精確度毫秒,誤差1000毫秒內(nèi)例:@echooffecho%time%call:delay5000echo%time%pauseexit:delayechoWScript.Sleep%1>delay.vbsCScript//Bdelay.vbsdeldelay.vbsgoto:eof運(yùn)行顯示:10:44:06.4510:44:11.95請按任意鍵繼續(xù)...上面的運(yùn)行結(jié)果顯示實(shí)際延時(shí)了5500毫秒,多出來的500毫秒時(shí)建立和刪除臨時(shí)文件所耗費(fèi)的時(shí)間。誤差在一秒之內(nèi)。4、僅用批處理命令實(shí)現(xiàn)任意時(shí)間延遲,精確度10毫秒,誤差50毫秒內(nèi)僅用批處理命令就可以實(shí)現(xiàn)延遲操作。例:@echooffset/pdelay=請輸入需延遲的毫秒數(shù):setTotalTime=0setNowTime=%time%::讀取起始時(shí)間,時(shí)間格式為:13:01:05.95echo程序開始時(shí)間:%NowTime%:delay_continueset/aminute1=1%NowTime:~3,2%-100::讀取起始時(shí)間的分鐘數(shù)set/asecond1=1%NowTime:~-5,2%%NowTime:~-2%0-100000::將起始時(shí)間的秒數(shù)轉(zhuǎn)為毫秒setNowTime=%time%set/aminute2=1%NowTime:~3,2%-100::讀取現(xiàn)在時(shí)間的分鐘數(shù)set/asecond2=1%NowTime:~-5,2%%NowTime:~-2%0-100000::將現(xiàn)在時(shí)間的秒數(shù)轉(zhuǎn)為毫秒set/aTotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%if%TotalTime%lss%delay%gotodelay_continueecho程序結(jié)束時(shí)間:%time%echo設(shè)定延遲時(shí)間:%delay%毫秒echo實(shí)際延遲時(shí)間:%TotalTime%毫秒pause運(yùn)行顯示:請輸入需延遲的毫秒數(shù):6000程序開始時(shí)間:15:32:16.37程序結(jié)束時(shí)間:15:32:22.37設(shè)定延遲時(shí)間:6000毫秒實(shí)際延遲時(shí)間:6000毫秒請按任意鍵繼續(xù)...實(shí)現(xiàn)原理:首先設(shè)定要延遲的毫秒數(shù),然后用循環(huán)累加時(shí)間,直到累加時(shí)間大于等于延遲時(shí)間。誤差:windows系統(tǒng)時(shí)間只能精確到10毫秒,所以理論上有可能存在10毫秒誤差。經(jīng)測試,當(dāng)延遲時(shí)間大于500毫秒時(shí),上面的延遲程序一般不存在誤差。當(dāng)延遲時(shí)間小于500毫秒時(shí),可能有幾十毫秒誤差,為什么?因?yàn)檠舆t程序本身也是有運(yùn)行時(shí)間的,同時(shí)系統(tǒng)時(shí)間只能精確到10毫秒。為了方便引用,可將上面的例子改為子程序調(diào)用形式:@echooffecho程序開始時(shí)間:%Time%call:delay10echo實(shí)際延遲時(shí)間:%totaltime%毫秒echo程序結(jié)束時(shí)間:%time%pauseexit::以下為延時(shí)子程序:delay@echooffif"%1"==""goto:eofsetDelayTime=%1setTotalTime=0setNowTime=%time%::讀取起始時(shí)間,時(shí)間格式為:13:01:05.95:delay_continueset/aminute1=1%NowTime:~3,2%-100set/asecond1=1%NowTime:~-5,2%%NowTime:~-2%0-100000setNowTime=%time%set/aminute2=1%NowTime:~3,2%-100set/asecond2=1%NowTime:~-5,2%%NowTime:~-2%0-100000set/aTotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%if%TotalTime%lss%DelayTime%gotodelay_continuegoto:eof十、模擬進(jìn)度條下面給出一個(gè)模擬進(jìn)度條的程序。如果將它運(yùn)用在你自己的程序中,可以使你的程序更漂亮。@echooffmodeconcols=113lines=15&color9fclsecho.echo程序正在初始化...echo.echo┌──────────────────────────────────────┐set/p=■<nulfor/L%%iin(1138)doset/pa=■<nul&ping/n1>nulecho100%%echo└──────────────────────────────────────┘pause解說:“set/pa=■<nul”的意思是:只顯示提示信息“■”且不換行,也不需手工輸入任何信息,這樣可以使每個(gè)“■”在同一行逐個(gè)輸出?!皃ing/n0127.1>nul”是輸出每個(gè)“■”的時(shí)間間隔,即每隔多少時(shí)間輸出一個(gè)“■”。十一、特殊字符的輸入及應(yīng)用開始->運(yùn)行->輸入cmd->edit->ctrl+p(意思是允許輸入特殊字符)->按ctrl+a將會(huì)顯示笑臉圖案。(如果要繼續(xù)輸入特殊字符請?jiān)俅伟碿trl+p,然后ctrl+某個(gè)字母)以上是特殊字符的輸入方法,選自[英雄]教程,很管用的。也就是用編輯程序edit輸入特殊字符,然后保存為一文本文件,再在windows下打開此文件,復(fù)制其中的特殊符號(hào)即可。一些簡單的特殊符號(hào)可以在dos命令窗口直接輸入,并用重定向保存為文本文件。例:C:>ECHO^G>temp.txt“^G”是用Ctrl+G或Alt+007輸入,輸入多個(gè)^G可以產(chǎn)生多聲鳴響。特殊字符的應(yīng)用也很有意思,這里僅舉一例:退格鍵退格鍵表示刪除左邊的字符,此鍵不能在文檔中正常輸入,但可以通過edit編輯程序錄入并復(fù)制出來。即“”。利用退格鍵,可以設(shè)計(jì)閃爍文字效果例:文字閃爍@echooff:startset/p=床前明月光<nul::顯示文字,光標(biāo)停于行尾ping-n0>nul::設(shè)置延遲時(shí)間set/pa=<nul::輸出一些退格符將光標(biāo)置于該行的最左端(退格符的數(shù)量可以自己調(diào)整)。set/pa=<nul::輸出空格將之前輸出的文字覆蓋掉。set/pa=<nul::再次輸出退格符將光標(biāo)置于該行的最左端,這里的退格符數(shù)量一定不能比前面的空格數(shù)少。::否則光標(biāo)不能退到最左端。gotostart例:輸出唐詩一首,每行閃動(dòng)多次@echooffsetlocalenabledelayedexpansionsetstr=床前明月光疑是地上霜舉頭望明月低頭思故鄉(xiāng)::定義字符串strfor%%iin(%str%)do(rem由于str中含有空格,則以空格為分隔符將str中的每一個(gè)部分依次賦給變量%%i。setchar=%%iecho.echo.for/l%%jin(0,1,5)do(set/p=!char:~%%j,1!<nulrem依次取出變量char中的每一個(gè)字符,并顯示。ping-n0>nulrem設(shè)置輸出每個(gè)字符的時(shí)間延遲。)call:hero%%i)pause>nulexit:herofor/l%%kin(1,1,10)do(ping/n0>nulset/pa=<nulset/pa=<nulset/pa=<nulping/n0>nulset/pa=%1<nul)::文字閃動(dòng)goto:eof十二、隨機(jī)數(shù)(%random%)的應(yīng)用技巧%RANDOM%系統(tǒng)變量返回0到32767之間的任意十進(jìn)制數(shù)字。由Cmd.exe生成。2的15次方等于32768,上面的0~32767實(shí)際就是15位二進(jìn)制數(shù)的范圍。那么,如何獲取100以內(nèi)的隨機(jī)數(shù)呢?很簡單,將%RANDOM%按100進(jìn)行求余運(yùn)算即可,見例子。例:生成5個(gè)100以內(nèi)的隨機(jī)數(shù)@echooffsetlocalenabledelayedexpansionfor/L%%iin(115)do(set/arandomNum=!random!%%100echo隨機(jī)數(shù):!randomNum!)pause運(yùn)行結(jié)果:(每次運(yùn)行不一樣)隨機(jī)數(shù):91隨機(jī)數(shù):67隨機(jī)數(shù):58隨機(jī)數(shù):26隨機(jī)數(shù):20請按任意鍵繼續(xù)...求余數(shù)運(yùn)算set/arandomNum=!random!%%100中的100可以是1~32768之間的任意整數(shù)。總結(jié):利用系統(tǒng)變量%random%,求余數(shù)運(yùn)算%%,字符串處理等,可以實(shí)現(xiàn)很多隨機(jī)處理。思考題目:生成給定位數(shù)的隨機(jī)密碼解答思路:將26個(gè)英文字母或10數(shù)字以及其它特殊字符組成一個(gè)字符串,隨機(jī)抽取其中的若干字符。參考答案1:(簡單)@echooffcall:randomPassword5pa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論