變量的使用格式
[設定變量]
格式:set 變量名=變量值
詳細:被設定的變量以%變量名%引用
[引用變量]
格式: %變量名%
詳細: 可以用echo %變量名%列印變量的隻
[取消變量]
格式:set 變量名=
詳細:取消後的變量若被引用%變量名%将為空
[展示變量]
格式:set 變量名
詳細:展示以變量名開頭的所有變量的值
[列出所有可用的變量]
格式:set
[電腦]
格式:set /a 表達式
示例:set /a 1+2*3
輸出 7
預定義的變量
下面是些已經被底層定義好可以直接使用的變量:不會出現在 SET 顯示的變量清單中
- %CD% - 擴充到目前目錄字元串。
- %DATE% - 用跟 DATE 指令同樣的格式擴充到目前日期。
- %TIME% - 用跟 TIME 指令同樣的格式擴充到目前時間。
- %RANDOM% - 擴充到 0 和 32767 之間的任意十進制數字。
- %ERRORLEVEL% - 擴充到目前 ERRORLEVEL 數值。
- %CMDEXTVERSION% - 擴充到目前指令處理器擴充名版本号。
- %CMDCMDLINE% - 擴充到調用指令處理器的原始指令行。
- %0 bat的完整路徑名如"C:\Windows\system32\xxx.bat"
- %1 bat參數1 依次類推%2參數2…
- %path% - 目前的環境變量。以分号隔開的路徑清單,路徑可包含空格,可以以’'結尾, 可以以雙引号包圍之。
擴充變量
@ 與%i相關的變量(bat參數或者for循環的%i)
假設檔案為C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
- %0 C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
- %~dp0 C:\Documents and Settings\jinsun\桌面\
- %cd% C:\Documents and Settings\jinsun\桌面
- %~nx0 ParseSinglePkgs.bat
- %~n0 ParseSinglePkgs
- %~x0 .bat
擷取批處理檔案所在路徑
在開發時,經常需要使用批處理運作一些程式,java程式 猶其是這樣,往往需要運作時根路徑。Hardcode一個路徑總是令自己覺得不自在,例如一個java程式從一台機copy到另外一台機,盤符往往發生變化,先修改一下bat裡的路徑再運作顯然很麻煩。
在批處理開頭加入
cd /d %~dp0
一行代碼就真真實實地做到“編寫一次,到處運作”。
/d選項支援CD到不同盤符
另外,%i提取第i個指令選項,例如%1提取第1個option,i可以取值從1到9
%~0: 取檔案名(名+擴充名)
%~f0:取全路徑
%~d0:取驅動器名
%~p0:隻取路徑(不包驅動器)
%~n0:隻取檔案名
%~x0:隻取檔案擴充名
%~s0:取縮寫全路徑名
%~a0:取檔案屬性
%~t0:取檔案建立時間
%~z0:取檔案大小
以上選項可以組合起來使用。
擷取指令行參數
%0,%1,%2,… %9,可以用來引用指令行參數,其中%0表示被執行的bat檔案本身,%1~%9表示第1到第9個指令行參數。
如果參數個數超過10個,可以用shift指令左移,這個時候%1表示第二個參數,%9表示第10個參數,一次類推。
@ 與%VAR%相關的變量
-
%VAR:str1=str2%
會将VAR中的str1替換為str2(str2如果為空則可以達到删除的效果,str1前可以加*,變量%ABC:*B=%是C)
- %VAR:~0,-2% 會提取VAR 變量的所有字元,除了最後兩個
- %VAR:~-2% 會提取VAR 變量的最後兩個
系統變量
他們的值由系統将其根據事先定義的條件自動指派,我們隻需要調用而已
- %ALLUSERSPROFILE% (allusersprofile)本地 傳回“所有使用者”配置檔案的位置。 C:Documents and SettingsAll Users
- %APPDATA% (appdata)本地傳回預設情況下應用程式存儲資料的位置。 C:Documents and SettingsAdministratorApplication Data
-
%CD% (cd)本地傳回目前目錄字元串。
C:Documents and SettingsAdministrator桌面
- %CMDCMDLINE% (cmdcmdline)本地傳回用來啟動目前的 Cmd.exe 的準确指令行。 cmd /c "“C:Documents and SettingsAdministrator桌面a.bat” "
- %CMDEXTVERSION%(cmdextversion)系統傳回目前的“指令處理程式擴充”的版本号。2
- %COMPUTERNAME% (computername)系統傳回計算機的名稱。 xxxx
- %COMSPEC% (comspec) 系統傳回指令行解釋器可執行程式的準确路徑。 C:WINDOWSsystem32cmd.exe
- %DATE% 系統傳回目前日期。使用與 date /t 指令相同的格式。由 Cmd.exe 生成。有關 date 指令的詳細資訊,請參閱 Date。
- %ERRORLEVEL% (errorlevel) 系統傳回上一條指令的錯誤代碼。通常用非零值表示錯誤。
- %HOMEDRIVE% (homedrive)系統傳回連接配接到使用者主目錄的本地工作站驅動器号。基于主目錄值而設定。使用者主目錄是在“本地使用者群組”中指定的。 C:
- %HOMEPATH% (homepath) 系統傳回使用者主目錄的完整路徑。基于主目錄值而設定。使用者主目錄是在“本地使用者群組”中指定的。 Documents and SettingsAdministrator
- %HOMESHARE% (homeshare) 系統傳回使用者的共享主目錄的網絡路徑。基于主目錄值而設定。使用者主目錄是在“本地使用者群組”中指定的。
- %LOGONSERVER% (logonserver) 本地傳回驗證目前登入會話的域控制器的名稱 \ xxxx
- %NUMBER_OF_PROCESSORS% (numeer_of_processors) 系統指定安裝在計算機上的處理器的數目。
- %OS% (os)系統傳回作業系統名稱。Windows 2000 顯示其作業系統為 Windows_NT。
- %PATH% (path)系統指定可執行檔案的搜尋路徑。
- %PATHEXT% (pathext)系統傳回作業系統認為可執行的檔案擴充名的清單。 .COM .EXE .BAT .CMD .VBS .VBE .JS .JSE .WSF .WSH
- %PROCESSOR_ARCHITECTURE% (processor_architecture) 系統傳回處理器的晶片體系結構。值:x86 或 IA64 基于Itanium x86
- %PROCESSOR_IDENTFIER% (processor_identfier)系統傳回處理器說明。
- %PROCESSOR_LEVEL% (processor_level)系統傳回計算機上安裝的處理器的型号。 15
- %PROCESSOR_REVISION% (processor_revision)系統傳回處理器的版本号。 4f02
- %PROMPT% (prompt)本地 傳回目前解釋程式的指令提示符設定。由 Cmd.exe 生成。 P P PG
- %RANDOM% (random)系統傳回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成。 30580
- %SYSTEMDRIVE% (systemdrive)系統傳回包含 Windows server operating system 根目錄(即系統根目錄)的驅動器。 C:
- %SYSTEMROOT% (systemroot)系統傳回 Windows server operating system 根目錄的位置。C:WINDOWS
- %TEMP%(temp) C:DOCUME~1ADMINI~1LOCALS~1Temp和 %TMP% (tmp)C:DOCUME~1ADMINI~1LOCALS~1Temp系統和使用者傳回對目前登入使用者可用的應用程式所使用的預設臨時目錄。有些應用程式需要 TEMP,而其他應用程式則需要 TMP。
- %TIME% 系統 傳回目前時間。使用與 time /t 指令相同的格式。由 Cmd.exe 生成。有關 time 指令的詳細資訊,請參閱 Time。
- %USERDOMAIN% (userdomain)本地傳回包含使用者帳戶的域的名稱。 xxxx
- %USERNAME% (username)本地傳回目前登入的使用者的名稱。 Administrator
- %USERPROFILE% (userprofile)本地傳回目前使用者的配置檔案的位置。 C:Documents and SettingsAdministrator
- %WINDIR%(windir) 系統 傳回作業系統目錄的位置。 C:WINDOWS
轉載自http://www.cnblogs.com/lm002003/archive/2012/05/15/2502367.html