• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Xp命令解釋程序cmd.exe概述

            條件處理符號(hào)

            &(順序執(zhí)行命令),&&(前一個(gè)成功則執(zhí)行后一個(gè)), ||(前一個(gè)失敗執(zhí)行后一個(gè))
            例子:dir&arp         ;先執(zhí)行dir,接著執(zhí)行arp
                  dir&&arp        ;dir執(zhí)行成功后,才執(zhí)行arp
                  dir||arp        ;dir失敗(通常返回值為非0時(shí)執(zhí)行失敗),才執(zhí)行arp
            環(huán)境變量
            Cmd.exe 命令行解釋器環(huán)境由確定命令行解釋器和操作系統(tǒng)的行為的變量進(jìn)行定義。可以使用兩種類型的環(huán)境變量(系統(tǒng)和本地)來定義命令行解釋器環(huán)境或整個(gè)操作系統(tǒng)環(huán)境的行為。系統(tǒng)環(huán)境變量定義全局操作系統(tǒng)環(huán)境的行為。本地環(huán)境變量定義 Cmd.exe 當(dāng)前實(shí)例的環(huán)境的行為。

            下表列出 Windows XP 的系統(tǒng)和局部環(huán)境變量。

            變量 類型 說明
            %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 生成。有關(guān) date 命令的詳細(xì)信息,請(qǐng)參閱 Date
            %ERRORLEVEL% 系統(tǒng) 返回最近使用過的命令的錯(cuò)誤代碼。通常用非零值表示錯(cuò)誤。
            %HOMEDRIVE% 系統(tǒng) 返回連接到用戶主目錄的本地工作站驅(qū)動(dòng)器號(hào)。基于主目錄值的設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
            %HOMEPATH% 系統(tǒng) 返回用戶主目錄的完整路徑。基于主目錄值的設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
            %HOMESHARE% 系統(tǒng) 返回用戶的共享主目錄的網(wǎng)絡(luò)路徑。基于主目錄值的設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
            %LOGONSEVER% 局部 返回驗(yàn)證當(dāng)前登錄會(huì)話的域控制器的名稱。
            %NUMBER_OF_PROCESSORS% 系統(tǒng) 指定安裝在計(jì)算機(jī)上的處理器的數(shù)目。
            %OS% 系統(tǒng) 返回操作系統(tǒng)的名稱。Windows 2000 將操作系統(tǒng)顯示為 Windows_NT
            %PATH% 系統(tǒng) 指定可執(zhí)行文件的搜索路徑。
            %PATHEXT% 系統(tǒng) 返回操作系統(tǒng)認(rèn)為可執(zhí)行的文件擴(kuò)展名的列表。
            %PROCESSOR_ARCHITECTURE% 系統(tǒng) 返回處理器的芯片體系結(jié)構(gòu)。值: x86,IA64。
            %PROCESSOR_IDENTFIER% 系統(tǒng) 返回處理器說明。
            %PROCESSOR_LEVEL% 系統(tǒng) 返回計(jì)算機(jī)上安裝的處理器的型號(hào)。
            %PROCESSOR_LEVEL% 系統(tǒng) 返回處理器的版本號(hào)。
            %PROMPT% 局部 返回當(dāng)前解釋程序的命令提示符設(shè)置。由 Cmd.exe 生成。
            %RANDOM% 系統(tǒng) 返回 0 到 32767 之間的任意十進(jìn)制數(shù)字。由 Cmd.exe 生成。
            %SYSTEMDRIVE% 系統(tǒng) 返回包含 Windows XP 根目錄(即系統(tǒng)根目錄)的驅(qū)動(dòng)器。
            %SYSTEMROOT% 系統(tǒng) 返回 Windows XP 根目錄的位置。
            %TEMP% and %TMP% 系統(tǒng)和用戶 返回對(duì)當(dāng)前登錄用戶可用的應(yīng)用程序所使用的默認(rèn)臨時(shí)目錄。有些應(yīng)用程序需要 TEMP,而其它應(yīng)用程序則需要 TMP。
            %TIME% 系統(tǒng) 返回當(dāng)前時(shí)間。使用與 time /t 命令相同的格式。由 Cmd.exe 生成。有關(guān) time 命令的詳細(xì)信息,請(qǐng)參閱 Time
            %USERDOMAIN% 局部 返回包含用戶帳戶的域的名稱。
            %USERNAME% 局部 返回當(dāng)前登錄的用戶的名稱。
            %UserPrefix% 局部 返回當(dāng)前用戶的配置文件的位置。
            %WINDIR% 系統(tǒng) 返回操作系統(tǒng)目錄的位置。

            cmd.exe可以嵌套執(zhí)行,它的每個(gè)實(shí)例都繼承其父應(yīng)用程序的環(huán)境,對(duì)新的cmd.exe實(shí)例環(huán)境的修改可以不影響父cmd.exe

            批處理參數(shù)擴(kuò)展替換
            cmd.exe支持批處理參數(shù)擴(kuò)展替換(%0~%9), %0為當(dāng)前批處理文件名,%1為命令行第一個(gè)參數(shù),依此類推,更多的參數(shù)替換用shift命令
            例:
            mycopy.bat C:\Folder1 C:\Folder2
            則在mycopy.bat文件內(nèi)部,執(zhí)行時(shí)所有的%0用mycopy.bat替換,%1用C:\Folder1替換 %2用C:\Folder2替換
            比如,在mycopy.bat內(nèi)部命令:xcopy %1\*.* %2,擴(kuò)展后為
                            xcopy C:\Folder1\*.* C:\Folder2
            參數(shù)替換時(shí),還可使用編輯符實(shí)現(xiàn)一些替換時(shí)的特殊處理,編輯符的格式如下:
            %~[modifier]digit
            例子:
            編輯符                                 說明
            %~1                                  擴(kuò)展 %1 并刪除任何引號(hào) ("")。
            %~f1                                 將 %1 擴(kuò)展到完全合格的路徑名。
            %~d1                                 將 %1 擴(kuò)展到驅(qū)動(dòng)器盤符。 
            %~p1                                 將 %1 擴(kuò)展到路徑。
            %~n1                                 將 %1 擴(kuò)展到文件名。 
            %~x1                                 將 %1 擴(kuò)展到文件擴(kuò)展名。
            %~s1                                 擴(kuò)展的路徑僅包含短名稱。
            %~a1                                 將 %1 擴(kuò)展到文件屬性。
            %~t1                                 將 %1 擴(kuò)展到文件日期/時(shí)間。
            %~z1                                 將 %1 擴(kuò)展到文件大小。
            %~$PATH:1                            搜索 PATH 環(huán)境變量中列出的目錄,并將 %1 擴(kuò)展到第一個(gè)找到的                                     目錄的完全合格名稱。如果沒有定義環(huán)境變量名稱,或沒有找到文                                     件,則此編輯符擴(kuò)展成空字符串。
            編輯符和限定符的組合還可用于獲取復(fù)雜結(jié)果,所有可能組合如下:
            編輯符                                 說明
            %~dp1                                 將 %1 擴(kuò)展到驅(qū)動(dòng)器盤符和路徑。
            %~nx1                                將 %1 擴(kuò)展到文件名和擴(kuò)展名。
            %~dp$PATH:1                     在 PATH 環(huán)境變量列出的目錄中搜索 %1,并擴(kuò)展到第一個(gè)找到的目錄的驅(qū)動(dòng)器盤符和路徑。
            %~ftza1                              將 %1 擴(kuò)展到類似 dir 的輸出行。

            命令重定向操作符

            可以使用重定向操作符將命令輸入和輸出數(shù)據(jù)流從默認(rèn)位置重定向到不同的位置。輸入或輸出數(shù)據(jù)流的位置即為句柄

            下表列出了可用于將命令輸入和輸出數(shù)據(jù)流進(jìn)行重定向的操作符。

            重定向操作符 說明
            > 將命令輸出寫入到文件或設(shè)備(例如打印機(jī))中,而不是寫在命令提示符窗口中。
            < 從文件中而不是從鍵盤中讀入命令輸入。
            >> 將命令輸出添加到文件末尾而不刪除文件中的信息。
            >& 將一個(gè)句柄的輸出寫入到另一個(gè)句柄的輸入中。
            <& 從一個(gè)句柄讀取輸入并將其寫入到另一個(gè)句柄輸出中。
            | 從一個(gè)命令中讀取輸出并將其寫入另一個(gè)命令的輸入中。也稱作管道。

            批處理核心命令:

            set [[/a [expression]] [/p variable=[promptString]] string]

            set命令具有的功能:創(chuàng)建,配置和查詢環(huán)境變量,表達(dá)式值計(jì)算
            <>|&^是命令外殼特殊字符,字符串中出現(xiàn)這些字符時(shí)需要加escape字符(^)轉(zhuǎn)義,如
            P&G, 應(yīng)為P^&G; YY||MM,應(yīng)為YY^|^|MM.
            參數(shù)釋義:
            /a expression開關(guān),將等號(hào)右邊的string作為可求值的數(shù)值表達(dá)式計(jì)算,按遞減優(yōu)先級(jí)支持以下操作:
            運(yùn)算符                                                                 執(zhí)行的操作
            < >                                                                       分組
            * / % + -                                                                 算法
            << >>                                                                     邏輯移位
            &                                                                         按位“與”運(yùn)算
            ^                                                                         按位“異或”運(yùn)算
            |                                                                         按位“或”運(yùn)算
            = *= /= %= += -= &= ^= |= <<= >>=                                         分配
            ,                                                                         表達(dá)式分隔符
            string作為表達(dá)式求值時(shí),出現(xiàn)的非數(shù)值字符默認(rèn)為環(huán)境變量名,并將其值轉(zhuǎn)換為數(shù)字后再進(jìn)行處理,不存在的環(huán)境變量自動(dòng)作為0處理。取值時(shí)無需再加%。
            表達(dá)式中的數(shù)字支持16進(jìn)制和8進(jìn)制形式,16進(jìn)制數(shù)以0x開頭,8進(jìn)制以0開頭,因此08..和09..是非法數(shù),因?yàn)?進(jìn)制數(shù)沒有8和9兩個(gè)digit。

            /p開關(guān),允許將用戶輸入設(shè)置為變量variable的值,讀取輸入前系統(tǒng)會(huì)顯示指定的promptString, promptString可以為空
            例子:set  /p myExpression=Please input a expression:
                  set /a myResult=%myExpression%
                  則myResult中保存的即為輸入表達(dá)式的值
            set命令的簡單用法為
            set [variable[=[string]]],可完成的功能為查詢、新建、更改或者刪除環(huán)境變量
                     
            For命令
            格式如下:
            for {%variable|%%variable} in (set) do command [ CommandLineOption ]
            注釋:
            下列屬性適用于 for 命令:

            for 命令使用指定 set 中的每個(gè)文本字符串替換 %variable 或 %%variable,直到 command 處理所有文件為止。
            記住,for variable名是區(qū)分大小寫、全局的,并且每次總共不超過 52 個(gè)是活動(dòng)的。
            要避免批處理參數(shù)從 %0 到 %9 混淆,對(duì) variable 可以使用除數(shù)字 0 到 9 之外的任何字符。對(duì)于簡單的批處理文件,單個(gè)字符即可奏效,例如 %%f。
            在復(fù)雜的批處理文件中可以使用 variable 的多個(gè)值來區(qū)分不同的可替換變量。

            set 參數(shù)可以代表單個(gè)或多個(gè)文件組。可以使用通配符(即,* 和 ?)指定文件組。以下為有效文件組:

            (*.doc)

            (*.doc *.txt *.me)

            (jan*.doc jan*.rpt feb*.doc feb*.rpt)

            (ar??1991.* ap??1991.*)

            在使用 for 命令時(shí),set 中的第一個(gè)值代替 %variable 或 %%variable,然后由指定的命令處理該值。這一直會(huì)繼續(xù)下去,直到處理完與 set 值相對(duì)應(yīng)的所有文件(或文件組)為止。

            In 和 do 不是參數(shù),但必須將它們與 for 一起使用。如果省略其中任何一個(gè)關(guān)鍵字,就會(huì)出現(xiàn)錯(cuò)誤消息。

            如果命令擴(kuò)展名處于啟用狀態(tài)(即,默認(rèn)設(shè)置),則支持 for 的下列其它形式:

            僅為目錄
            如果 set 包含通配符(* 和 ?),則為匹配 set 的每個(gè)目錄(而不是指定目錄中的文件組)而執(zhí)行指定的 command。語法是:

            for /D {%% | %}variable in (set) do command [CommandLineOptions]

            遞歸
            進(jìn)入根目錄樹 [Drive:]Path,在樹的每個(gè)目錄中執(zhí)行 for 語句。如果在 /R 后沒有指定目錄,則假定為當(dāng)前目錄。如果 set 只是一個(gè)句號(hào) (.),則只列舉目錄樹。語法是:

            for /R [[Drive :]Path] {%% | %}variable in (set) do command [CommandLineOptions]

            重復(fù)數(shù)值范圍
            使用迭代變量設(shè)置起始值 (start#) ,然后一步步執(zhí)行一系列設(shè)置范圍的值,直到該值超過設(shè)置的終止值 (end#)。/L 將通過對(duì) start# 與 end# 進(jìn)行比較,執(zhí)行迭代變量。如果 start# 小于 end#,就會(huì)執(zhí)行該命令。如果迭代變量超過 end#,則命令解釋程序退出此循環(huán)。也可以使用負(fù) step# 以遞減數(shù)值的方式一步步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5) 生成順序 1 2 3 4 5,而 (5,-1,1) 則生成順序 (5 4 3 2 1)。語法是:

            for /L {%% | %}variable in (start#,step#,end#) do command [CommandLineOptions]

            重復(fù)和文件解析
            使用文件解析過程處理命令輸出、字符串和文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符串,以及使用各種 ParsingKeywords 選項(xiàng)進(jìn)一步修改解析方式。使用 ParsingKeywords 令牌選項(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è)空白分隔符號(hào)。跳過空行。語法的不同點(diǎn)為:

            for /F ["ParsingKeywords"] {%% | %}variable in (filenameset) do command [CommandLineOptions]

            for /F ["ParsingKeywords"] {%% | %}variable in ("LiteralString") do command [CommandLineOptions]

            for /F ["ParsingKeywords"] {%% | %}variable in ('command') do command [CommandLineOptions]

            filenameset 參數(shù)指定一個(gè)或多個(gè)文件名稱。在繼續(xù)到 filenameset 中的下一個(gè)文件之前,每個(gè)文件都會(huì)被打開、讀取和處理。要覆蓋默認(rèn)解析行為,指定 "ParsingKeywords"。這是一個(gè)引用字符串,它包含一個(gè)或多個(gè)關(guān)鍵字以指定不同的解析選項(xiàng)。

            如果使用 usebackq(use back quoted, 后引號(hào)`) 選項(xiàng),請(qǐng)使用如下語法之一:

            for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]

            for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]

            for /F ["usebackqParsingKeywords"] {%% | %}variable in (`command`) do command [CommandLineOptions]

            下表列出可以用于 ParsingKeywords 的解析關(guān)鍵字。

            關(guān)鍵字                                     說明
            eol=c                                     指定行尾字符(只一個(gè)字符)。
            skip=n                                 指定在文件的開頭跳過的行數(shù)。
            delims=xxx                         指定定界符集合。這將替換空格和制表符的默認(rèn)分隔符集。
            tokens=x,y,m-n                     指定將哪些令牌從每行傳遞到每個(gè)迭代的 for 正文。結(jié)果就分配了附加變量名稱。m-n 格式是一個(gè)范圍   
                                                        ,指定從 mth 到 nth 的令牌。如果 tokens=字符串中最后一個(gè)字符是星號(hào) (*),則將分配附加的變量,并在解析的最后一個(gè)令牌后在行上接收剩余的文本。
            usebackq                                 指定可以使用引號(hào)引用 filenameset 中的文件名稱,將后面帶有引號(hào)的字符串作為一個(gè)命令執(zhí)行,而帶有                                            單引號(hào)的字符串是文字字符串命令。
            解析字符串
            通過將 Filenameset 包括在圓括號(hào)內(nèi),并且外面再帶上單引號(hào)(即,'filenameset'),可以使用 for /F 對(duì)直接字符串解析邏輯。將 Filenameset 視為從某個(gè)文件輸入的單行,然后接受解析。

            解析輸出
            通過將圓括號(hào)之間的 filenameset 變?yōu)楹竺鎺в幸?hào)的字符串,可以利用 for /F 命令解析命令輸出。將它作為命令行,此命令被傳遞給子 Cmd.exe,并將輸出捕獲到內(nèi)存并進(jìn)行解析,就象它是一個(gè)文件一樣。


            例子:
            for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k

            這個(gè)命令解析 myfile.txt 文件的每一行,忽略以分號(hào)開頭的行(注意eol只對(duì)一行起始字符有效,行中其他位置出現(xiàn)該字符并不會(huì)忽略后面的字符),將第二和第三個(gè)令牌從各行傳遞到 FOR 正文(令牌通過逗號(hào)或空格分隔)中。FOR 語句的正文引用 %i 以獲得第二個(gè)令牌,引用 %j 以獲得第三個(gè)令牌,引用 %k 以獲得其余全部令牌。如果您提供的文件名包含空格,請(qǐng)使用引號(hào)將文本引起來(例如,"File Name")。要使用引號(hào),必須使用 usebackq。否則,就將引號(hào)解釋為定義要解析的文字字符串。
            %i 在 FOR 語句中明確聲明,并且 %j 和 %k 使用 tokens= 隱含聲明。只要它不會(huì)引起嘗試聲明高于字母“z”或“Z”的某個(gè)變量,則使用 tokens= 可以指定最多 26 個(gè)令牌。

            要通過將 filenameset 放在括號(hào)之間來解析命令輸出,請(qǐng)鍵入:

            for /F "usebackq delims==" %i IN (`set`) DO @echo %i
            這個(gè)范例列舉當(dāng)前環(huán)境中的環(huán)境變量名。

            例子:文件namelist.txt的內(nèi)容為:
            01.xxxx
            ...
            13.xxxx
            同目錄下有Track01.mp3~Track13.mp3等文件,則執(zhí)行下面命令:
            @echo off
            if exist namelist.txt for /F "delims=. tokens=1,2" %%i in (namelist.txt) do if exist \ Track%%i.mp3 rename Track%%i.mp3 "%%i.%%j.mp3"
            pause
            結(jié)果為按namelist.txt的名字批量重命名Track*.mp3為相應(yīng)的名字

            Feedback

            # re: 批處理學(xué)習(xí)筆記1  回復(fù)  更多評(píng)論   

            2007-06-16 11:32 by 天津大學(xué)計(jì)算機(jī)學(xué)院 常興龍
            寫得很不錯(cuò)!
            国产精品久久久久乳精品爆| 一本综合久久国产二区| 亚洲色欲久久久综合网东京热| 精品综合久久久久久97| 色综合久久最新中文字幕| 日韩影院久久| 国产精品久久久久9999| 色婷婷久久久SWAG精品| 久久亚洲精品成人av无码网站| 久久久久中文字幕| 亚洲αv久久久噜噜噜噜噜| 久久亚洲中文字幕精品一区四| 色诱久久久久综合网ywww| 久久精品成人| 精品久久久久一区二区三区| 亚洲日本va中文字幕久久| 久久亚洲欧洲国产综合| 天天久久狠狠色综合| 久久影院综合精品| 狠狠色噜噜色狠狠狠综合久久| 中文字幕亚洲综合久久2| 久久国产精品久久久| 欧美噜噜久久久XXX| 亚洲中文久久精品无码| 伊人久久大香线蕉AV一区二区| 国产亚洲色婷婷久久99精品91| 国产婷婷成人久久Av免费高清| 久久综合精品国产二区无码| 国产精品久久久久久五月尺| 久久久久一级精品亚洲国产成人综合AV区| 精品国产乱码久久久久久1区2区| 人妻无码久久一区二区三区免费| 国产精品亚洲综合久久| 国产成人久久精品一区二区三区 | 久久e热在这里只有国产中文精品99| 久久人妻少妇嫩草AV无码专区| 日产精品99久久久久久| 国产精品久久久久久福利漫画 | 久久精品桃花综合| 亚洲精品乱码久久久久久按摩| 精品免费久久久久久久|