2010年12月28日 星期二

批次檔輸入參數(Batch File Command-Line Parameter)

因為工作需要,寫了批次檔案,
但為了判斷傳入參數的判斷,一直無法正確使用,
找了一些文章終於發現問題所在。
參考文章

判斷 User 是否有加入參數
IF NOT (%1)==() (echo 若有輸入,在這裡加入動作...)
重點就是在判斷式中加入 "()" ,否則沒有輸入參數時會有錯誤
不能寫成這樣 ==>  IF  %1== "" echo會發生錯誤


另外,因為我要確認是否 User 輸入的是 /step 所以寫法如下
IF NOT (%1)==() if (%1) == (/step) (echo 確定輸入的參數為/step) else (echo 輸入參數不是/step)

另外,為了取出日期時間並建立資料夾,所以要另外格式化日期時間變數,
寫法如下:
@For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set myDate=%%a-%%b-%%c)
@For /f "tokens=2-3 delims=: " %%a in ('time /t') do (set myTime=%%a-%%b)
@echo 目前日期 : %myDate% 目前時間 : %myTime%
@echo:

這裡的 "@echo:" 表示換行,這也是花了點時間才找到的換行寫法。

最後,因為 XP 本身預設沒有 CHOICE 指令,
所以無法用它等待使用者輸入資料
最後只好用 /p 的方式達成目的

set /p UserInput=請輸入資料 :

這行程式會秀出 請輸入資料 : 並且等待使用者輸入並按下 [Enter]
然後會把輸入的值放入 UserInput 的變數中。

沒有留言:

張貼留言