有時候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
=============================華麗分割線===============================