簡要說明如何使用批處理中的變量

有時候windows的批處理能帶來很方便的操作,批處理也有變量聲明,下面一段就是說的如何使用批處理中的變量。
set 功能一覽

[設置變量]
格式:set 變量名=變量值
詳細:被設定的變量以%變量名%引用

[取消變量]
格式:set 變量名=
詳細:取消後的變量若被引用%變量名%將爲空

[展示變量]
格式:set 變量名
詳細:展示以變量名開頭的所有變量的值

[列出所有可用的變量]
格式:set

[計算器]
格式:set  /a 表達式
示例:set /a 1+2*3  輸出 7

[設置變量爲表達式計算後的值]
set a=1+2
echo %a% ==>輸出1+2
————————————
set /a a=1+2
echo %a% ==>輸出3

[設置變量爲用戶輸入的值]
set /p a=輸入一個值 ==>輸出 輸入一個值
echo %a% ==>顯示用戶輸入的值
預定義的變量

下面是些已經被底層定義好可以直接使用的變量:不會出現在 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

@ 與%VAR%相關的變量
%VAR:str1=str2%   會將VAR中的str1替換爲str2(str2如果爲空則可以達到刪除的效果,str1前可以加*,變量%ABC:*B=%是C)
%VAR:~0,-2%          會提取VAR 變量的所有字符,除了最後兩個
%VAR:~2%              會提取VAR 變量的除前兩個的所有字符
%VAR:~-2%             會提取VAR 變量的最後兩個
%VAR:~2,5%           提取從第2個字符開始的5個字符

這篇文章看完了就懂了“%date:~0,4%%date:~5,2%%date:~8,2%.sql”是什麼意思了。

sample:

要利用計劃任務和mysqldump實現自動備份mysql,

於是寫了下面這個bat文件,
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p 111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
但是執行的時候總是提示Enter password: 這樣就失去自動備份的意義了。
後來發現-p 參數比較特殊,正確語法是 -ppassword,即-p和密碼中間不能有空格,於是就修改成
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
這樣就直接備份不再提醒輸入密碼了。

下面這段是批處理,生成以當天日期爲文件名的sql文件
%date:~0,4%%date:~5,2%%date:~8,2%.sql

 

=============================華麗分割線===============================

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