我有以下脚本片段:批次消毒参数
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’'被视为一个单一的参数文件名 –