青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

批處理學習筆記1

Posted on 2007-06-16 03:06 Michael Liang 閱讀(3371) 評論(1)  編輯 收藏 引用 所屬分類: 學習日志

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

條件處理符號

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

下表列出 Windows XP 的系統和局部環境變量。

變量 類型 說明
%ALLUSERSPROFILE% 局部 返回所有“用戶配置文件”的位置。
%APPDATA% 局部 返回默認情況下應用程序存儲數據的位置。
%CD% 局部 返回當前目錄字符串。
%CMDCMDLINE% 局部 返回用來啟動當前的 Cmd.exe 的準確命令行。
%CMDEXTVERSION% 系統 返回當前的“命令處理程序擴展”的版本號。
%COMPUTERNAME% 系統 返回計算機的名稱。
%COMSPEC% 系統 返回命令行解釋器可執行程序的準確路徑。
%DATE% 系統 返回當前日期。使用與 date /t 命令相同的格式。由 Cmd.exe 生成。有關 date 命令的詳細信息,請參閱 Date
%ERRORLEVEL% 系統 返回最近使用過的命令的錯誤代碼。通常用非零值表示錯誤。
%HOMEDRIVE% 系統 返回連接到用戶主目錄的本地工作站驅動器號。基于主目錄值的設置。用戶主目錄是在“本地用戶和組”中指定的。
%HOMEPATH% 系統 返回用戶主目錄的完整路徑。基于主目錄值的設置。用戶主目錄是在“本地用戶和組”中指定的。
%HOMESHARE% 系統 返回用戶的共享主目錄的網絡路徑。基于主目錄值的設置。用戶主目錄是在“本地用戶和組”中指定的。
%LOGONSEVER% 局部 返回驗證當前登錄會話的域控制器的名稱。
%NUMBER_OF_PROCESSORS% 系統 指定安裝在計算機上的處理器的數目。
%OS% 系統 返回操作系統的名稱。Windows 2000 將操作系統顯示為 Windows_NT
%PATH% 系統 指定可執行文件的搜索路徑。
%PATHEXT% 系統 返回操作系統認為可執行的文件擴展名的列表。
%PROCESSOR_ARCHITECTURE% 系統 返回處理器的芯片體系結構。值: x86,IA64。
%PROCESSOR_IDENTFIER% 系統 返回處理器說明。
%PROCESSOR_LEVEL% 系統 返回計算機上安裝的處理器的型號。
%PROCESSOR_LEVEL% 系統 返回處理器的版本號。
%PROMPT% 局部 返回當前解釋程序的命令提示符設置。由 Cmd.exe 生成。
%RANDOM% 系統 返回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系統 返回包含 Windows XP 根目錄(即系統根目錄)的驅動器。
%SYSTEMROOT% 系統 返回 Windows XP 根目錄的位置。
%TEMP% and %TMP% 系統和用戶 返回對當前登錄用戶可用的應用程序所使用的默認臨時目錄。有些應用程序需要 TEMP,而其它應用程序則需要 TMP。
%TIME% 系統 返回當前時間。使用與 time /t 命令相同的格式。由 Cmd.exe 生成。有關 time 命令的詳細信息,請參閱 Time
%USERDOMAIN% 局部 返回包含用戶帳戶的域的名稱。
%USERNAME% 局部 返回當前登錄的用戶的名稱。
%UserPrefix% 局部 返回當前用戶的配置文件的位置。
%WINDIR% 系統 返回操作系統目錄的位置。

cmd.exe可以嵌套執行,它的每個實例都繼承其父應用程序的環境,對新的cmd.exe實例環境的修改可以不影響父cmd.exe

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

命令重定向操作符

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

下表列出了可用于將命令輸入和輸出數據流進行重定向的操作符。

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

批處理核心命令:

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

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

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

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

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

(*.doc)

(*.doc *.txt *.me)

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

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

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

In 和 do 不是參數,但必須將它們與 for 一起使用。如果省略其中任何一個關鍵字,就會出現錯誤消息。

如果命令擴展名處于啟用狀態(即,默認設置),則支持 for 的下列其它形式:

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

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

遞歸
進入根目錄樹 [Drive:]Path,在樹的每個目錄中執行 for 語句。如果在 /R 后沒有指定目錄,則假定為當前目錄。如果 set 只是一個句號 (.),則只列舉目錄樹。語法是:

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

重復數值范圍
使用迭代變量設置起始值 (start#) ,然后一步步執行一系列設置范圍的值,直到該值超過設置的終止值 (end#)。/L 將通過對 start# 與 end# 進行比較,執行迭代變量。如果 start# 小于 end#,就會執行該命令。如果迭代變量超過 end#,則命令解釋程序退出此循環。也可以使用負 step# 以遞減數值的方式一步步執行此范圍內的值。例如,(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]

重復和文件解析
使用文件解析過程處理命令輸出、字符串和文件內容。使用迭代變量定義要檢查的內容或字符串,以及使用各種 ParsingKeywords 選項進一步修改解析方式。使用 ParsingKeywords 令牌選項指定哪些令牌應該傳遞為迭代程序變量。注意:在沒有使用令牌選項時,/F 將僅檢查第一個令牌。

文件解析過程包括讀取輸出、字符串或文件內容、分成獨立的文本行及然后將每行解析成零個或更多個令牌。然后通過設置為令牌的迭代程序變量值,調用 for 循環。默認情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。跳過空行。語法的不同點為:

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 參數指定一個或多個文件名稱。在繼續到 filenameset 中的下一個文件之前,每個文件都會被打開、讀取和處理。要覆蓋默認解析行為,指定 "ParsingKeywords"。這是一個引用字符串,它包含一個或多個關鍵字以指定不同的解析選項。

如果使用 usebackq(use back quoted, 后引號`) 選項,請使用如下語法之一:

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 的解析關鍵字。

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

解析輸出
通過將圓括號之間的 filenameset 變為后面帶有引號的字符串,可以利用 for /F 命令解析命令輸出。將它作為命令行,此命令被傳遞給子 Cmd.exe,并將輸出捕獲到內存并進行解析,就象它是一個文件一樣。


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

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

要通過將 filenameset 放在括號之間來解析命令輸出,請鍵入:

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

例子:文件namelist.txt的內容為:
01.xxxx
...
13.xxxx
同目錄下有Track01.mp3~Track13.mp3等文件,則執行下面命令:
@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
結果為按namelist.txt的名字批量重命名Track*.mp3為相應的名字

Feedback

# re: 批處理學習筆記1  回復  更多評論   

2007-06-16 11:32 by 天津大學計算機學院 常興龍
寫得很不錯!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美亚男人的天堂| 欧美国产大片| 影音先锋久久资源网| 欧美三级日本三级少妇99| 久久综合给合| 欧美国产日韩视频| 欧美岛国激情| 国产精品va在线| 国产酒店精品激情| 国内视频一区| 91久久久久久久久久久久久| 亚洲国产精品va在线观看黑人| 伊人久久亚洲热| 一本久道久久综合中文字幕| 午夜国产不卡在线观看视频| 久久福利一区| 亚洲最新色图| 亚洲视频一区| 久久久久久亚洲综合影院红桃| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲人午夜精品免费| 99re8这里有精品热视频免费| 亚洲影院在线观看| 欧美成人激情视频| 国产一区成人| 欧美一区二区三区免费视频| 亚洲动漫精品| 久久野战av| 国产欧美日韩一区| 亚洲欧美成人在线| 日韩一区二区免费高清| 嫩模写真一区二区三区三州| 国产视频一区二区三区在线观看| 一本色道久久综合亚洲精品不卡 | 女仆av观看一区| 国产欧美日韩精品丝袜高跟鞋| 日韩亚洲欧美高清| 亚洲国产成人av在线| 久久久久网址| 亚洲第一网站| 91久久久在线| 欧美日韩国产a| 一本到高清视频免费精品| 亚洲电影成人| 欧美片网站免费| 亚洲视频播放| 亚洲自拍偷拍福利| 国内综合精品午夜久久资源| 巨胸喷奶水www久久久免费动漫| 亚洲在线观看视频| 亚洲欧美国产不卡| 亚洲国产高清在线观看视频| 亚洲国产日韩在线| 欧美日韩在线播放三区| 久久久福利视频| 老鸭窝毛片一区二区三区 | 最近中文字幕mv在线一区二区三区四区| 玖玖精品视频| 午夜精品国产精品大乳美女| 久久久欧美一区二区| 亚洲综合二区| 欧美福利一区二区| 久久久国产精品一区二区三区| 欧美 日韩 国产在线| 欧美专区第一页| 欧美国产日本高清在线| 欧美在线视频不卡| 欧美视频精品一区| 亚洲高清av在线| 1024日韩| 久久琪琪电影院| 久久女同互慰一区二区三区| 国产精品第2页| 一区二区三区四区蜜桃| 一本久道久久久| 欧美极品影院| 亚洲三级色网| 一本久道久久综合婷婷鲸鱼 | 免费成人黄色片| 国产欧美日韩精品专区| 亚洲综合精品四区| 欧美一区二区女人| 一本大道久久a久久精品综合| 亚洲一区二区三区精品在线观看| 亚洲一区二区三区中文字幕在线| 久久久久五月天| 黄色精品一二区| 欧美激情在线观看| 裸体一区二区| 欧美日韩一二区| aa国产精品| 欧美高清自拍一区| 开心色5月久久精品| 一区二区日韩精品| 亚洲激情第一区| 欧美三级日韩三级国产三级| 9久re热视频在线精品| 久久免费视频网| 欧美成人精品在线播放| 欧美在线地址| 老司机午夜精品| 欧美一区午夜视频在线观看| 国产亚洲精品久久久久婷婷瑜伽| 欧美伊久线香蕉线新在线| 蜜桃av一区二区三区| 国产一区二区精品在线观看| 久久电影一区| 夜夜爽www精品| 欧美凹凸一区二区三区视频| 香蕉成人啪国产精品视频综合网| 亚洲成人资源| 一区二区在线观看av| 欧美日韩中文字幕综合视频| 久久久久久久久久码影片| 亚洲综合激情| 中文av字幕一区| 亚洲无限乱码一二三四麻| 亚洲国产精品成人综合色在线婷婷 | 一区二区欧美国产| 亚洲第一伊人| 亚洲高清免费| 亚洲日韩成人| 一本久久综合亚洲鲁鲁五月天| 91久久中文字幕| aaa亚洲精品一二三区| 午夜免费在线观看精品视频| 午夜一区二区三区不卡视频| 性欧美xxxx视频在线观看| 欧美伊人久久久久久久久影院| 亚洲欧美日韩中文播放| 久久精品亚洲| 欧美日韩国语| 很黄很黄激情成人| 亚洲看片免费| 久久精品一区二区三区不卡牛牛| 老司机免费视频久久| 亚洲精品免费电影| 亚洲综合日本| 嫩草影视亚洲| 在线日韩欧美视频| 亚洲资源av| 久久精品国产综合| 亚洲电影免费观看高清| 一区二区三区在线不卡| 在线综合亚洲| 久久精品国产一区二区三区免费看| 一区二区在线观看视频| 91久久精品日日躁夜夜躁欧美| 91久久精品网| 久久精品国产久精国产一老狼| 亚洲美女诱惑| 久久精品亚洲精品国产欧美kt∨| 麻豆91精品| 国产日韩欧美不卡在线| 亚洲精华国产欧美| 欧美专区亚洲专区| 亚洲美女黄网| 两个人的视频www国产精品| 欧美精品一区二区高清在线观看| 欧美一区二区精品久久911| 亚洲激情电影在线| 欧美a级大片| 狠狠久久亚洲欧美| 免费成人在线观看视频| 一区二区欧美亚洲| 欧美jjzz| 欧美精品免费看| 一区二区动漫| 91久久精品视频| 欧美电影免费观看高清| 欧美午夜精品一区二区三区| 中国亚洲黄色| 日韩视频在线一区二区| 欧美片在线播放| 一区二区三区四区国产精品| 麻豆精品91| 老司机免费视频一区二区三区| 伊伊综合在线| 亚洲视频导航| 国产亚洲欧美日韩精品| 麻豆精品精华液| 国产精品久久午夜夜伦鲁鲁| 亚洲免费人成在线视频观看| 亚洲欧美日韩精品久久亚洲区 | 欧美成人激情在线| 玖玖玖国产精品| 一区二区三区回区在观看免费视频| 国产在线高清精品| 亚洲精品日韩欧美| 国产欧美日韩视频| 亚洲国产精品va在线观看黑人 | 99视频精品全国免费| 香蕉久久久久久久av网站| 伊人久久av导航| 亚洲视频一区在线观看| 亚洲精品国产日韩| 久久久久久穴| 久久久久99| 久久夜色精品国产噜噜av| 欧美精品黄色|