遇上兩個問題
1.argument個數不固定
2.argument 可能包含>輸出符號
舉例來說,user可能下以下指令
C:>exejava.bat aa bb cc>dd.txt
或是
C:>exejava.bat aa bb ee ff cc>dd.txt
我本來是請user 將arg用雙引號包起來,如下
C:>exejava.bat ”aa bb ee ff cc>dd.txt“
我在exejava.bat中寫
set temp=%1
set temp=%temp:~1,-1%
"%JAVA_HOME%\bin\java" %temp%
但在set temp=%temp:~1,-1%時,卻會因為>輸出符號而導致錯誤
請問有什麼好方法嗎?
set temp=%1
set temp=%temp:~1,-1%
改成
set "temp=%1"
set "temp=%temp:~1,-1%"
我改成如您提供的語法
@cls
set "temp=%1"
set "temp=%temp:~1,-1%"
並傳入
exejava.bat ”dir>log.txt“
執行結果如下:
在第一句set "temp=%1" 卻變成set "temp="dir 1>log.txt""
請問是什麼地方寫錯了呢?
看到特殊符號就想到用引號,但這個例子不適合這樣包.
由於 arg 需要後處理,且這個 ">" 特殊符號需先已加入引號,所以第一個變數不該用引號包起來,否則後處理的部份會出現錯誤,請參考底下做法
@cls
@Echo Off
set temp1=%1
Echo 未處理:^"%Temp1%^"
Set temp1="%temp1:~1,-1%"
Echo 取字串:%temp1%
但這樣處理似乎沒意義?得到的還是 %1 的內容