我有以下腳本片段:批次消毒參數
if not {%2}=={} (
if not {%3}=={} (
"%~dp0otrtool\otrtool.exe" -x -e %2 -p %3 -D "%~dp1"" "%~f1"
)
)
如果我使用一個右括號用於輸入我得到一個錯誤:
C:\>script.bat).txt
輸出如下:
"test"" can not be processed syntactically at this point.
C:\> "d:\Scripts\OTRTools\otrtool\otrtool.exe" -x -e -p -D "C:\"" "C:\)test"
看起來支架正在關閉if語句之一,我需要以某種方式逃避它。有沒有可能對輸入進行適當的衛生處理?
嘗試使用引號來代替大括號。 – SomethingDark
除了像以前的評論建議一樣使用引號外,還有一個額外的引用:'「%〜dp1」「」%〜f1「'。是您的文件名爲「).TXT」?這是一個糟糕的主意...... – Aacini
嗯,我添加了額外的報價,因爲我有一個反斜槓的問題。'〜dp1'返回到包括最後一個反斜槓的文件夾的絕對路徑,例如'D:\ Stuff \',所以調用看起來像這樣:「D:\ Scripts \ OTRTools \ otrtool \ otrtool.exe」-x -e -p -D「D:\ Stuff \」「D:\ test.otrkey「'因爲該工具與GCC-cygwin的編譯,我認爲反斜槓被視爲轉義字符,因爲我得到一個錯誤:‘缺少參數:otrkey文件’,這表明,該'」 d:\東西\」‘d:\ test.otrkey’'被視爲一個單一的參數文件名 –