變數 系統變數 :: 觀察作業系統環境變數
set
:: 將作業系統環境變數輸出至variables.txt
set > variables.txt
設定變數 基本設定 set LogName=myLog.txt
注意事項如下:
注意空白
case insensitive
{% codeblock lang:bat %}
@ECHO off
SET spaceExam= beginText
SET aBc=Hello
SET Abc=World
ECHO %spaceExam%
ECHO %aBc%
PAUSE
{% endcodeblock %}
輸入提示 加上/p
{% codeblock lang:bat %}
@ECHO off
SET /p LogName=請輸入Log檔案名稱
ECHO Hello World >%LogName%
PAUSE
{% endcodeblock %}
運算式 加上/a
{% codeblock lang:bat %}
@ECHO off
SET /p num=Input Number
SET /p price=Input Price
SET /a sum=%num% * %price%
ECHO Sum=%sum%
PAUSE
{% endcodeblock %}
取得變數 前後加上%
ECHO %LogName%
常用變數 %CD% :當前工作目錄
%DATE% :目前系統日期
%TIME% :目前系統時間
%SystemDrive% :系統碟
%ProgramFiles% :應用程式目錄
%ProgramFiles(x86)% :應用程式目錄(x86)
if 直接參考 if/?
說明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 在批次檔中執行條件處理。 IF [NOT ] ERRORLEVEL number commandIF [NOT ] string1==string2 commandIF [NOT ] EXIST filename command NOT 表示 Windows 應該只有在條件為偽時才執行命令。 ERRORLEVEL number 當上一個執行的程式傳回的結束代碼大於或等於指定 數字時,則條件為真。 string1==string2 當指定的文字字串相符合時,則條件為真。 EXIST filename 如果指定的檔名存在時,則條件為真。 command 指定當條件為真時所要執行的命令。命令之後可以 接著 ELSE 命令。當指定條件為偽時,緊接在 ELSE 命令之後的命令將會被執行。 ELSE 子句必須出現在 IF 之後的同一行。例如: IF EXIST filename. ( del filename. ) ELSE ( echo filename. missing. ) 以下命令無法作用,因為 del 命令必須以換行字元來結尾: IF EXIST filename. del filename. ELSE echo filename. missing 下面命令也無法作用,因為 ELSE 命令必須在與 IF 命令同一行的結尾: IF EXIST filename. del filename. ELSE echo filename. missing 下面命令只有在寫成一行時才能作用: IF EXIST filename. (del filename.) ELSE echo filename. missing (more )...
範例:
1 2 3 4 5 6 7 @ECHO off IF NOT EXIST testFolder ( mkdir testFolder ) ELSE ( ECHO testFolder has been exist ) PAUSE
導向 1 2 3 4 Standard Output 代號 1 Standard Error 代號 2 Do Nothing 代號 NUL Console
1 2 3 4 5 > NUL :將Standard Output導向null 2 > NUL :將Standard Error導向null > NUL 2>&1 :同時將Standard Output和Standard Error導向null > log.txt 2>&1 :同時將Standard Output和Standard Error導向File(log.txt) > log_stdout.txt 2>log_stderr.txt :將Standard Output導向至log_stdout.txt以及將Standard Error導向至log_stderr.txt
常用範例 判斷指令是否存在 Determine if command is recognized in a batch file
1 2 3 4 5 6 7 8 @ECHO off WHERE mycommand 2 >NUL IF %ERRORLEVEL% NEQ 0 ( ECHO mycommand wasn't found ) ELSE ( ECHO mycommand found ) PAUSE
判斷檔案是否存在 檢查7z.exe是否存在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @ECHO off SET filepath=%ProgramFiles% \7 -Zip\SET filename=7 z.execd %filepath% IF EXIST %filename% ( ECHO %filename% found ECHO %CD% ) ELSE ( ECHO %filename% wasn't found ) :: BAT File所在位置 %~dp0 cd %~dp0ECHO %CD% PAUSE
日期與時間變數 1 2 3 4 5 6 7 8 9 10 11 12 13 ::民國年 set /a year=%date:~,4% -1911 ::西元年 set year=%date:~,4% ::月 set month=%date:~5,2% ::日 set day=%date:~8,2% ::今天日期 set Today=%year% %month% %day% ::時間 set NowTimeTmp=%time::=% set NowTime=%NowTimeTmp:~0,6%
參考資料