我正在尝试运行失败的脚本。我已将问题隔离为一个简单的 TYPE 命令。这是代码
IF NOT [%1]==[] ECHO Appending this log to %1
IF NOT [%1]==[] TYPE C:\test.log >> %1
如您所见,我想做的就是将日志文件复制到指定位置(如果指定)。如果没有指定额外的日志文件,该脚本也应该运行。
我无法弄清楚,因为它看起来是正确的,并且我尝试了不同的方法。如果传入参数,脚本运行正常。
编辑:我尝试回显该行,看起来像 IF NOT [] == [] TYPE C:\test.log 1>>
最佳答案
当 %1 为空时,脚本会失败,因为整个 IF 语句必须具有有效的语法,即使 IF 计算结果为 false 以致主体不会被执行。
您可以通过重定向到“%~1”
而不是%1
来解决该问题。需要使用 ~
来去除值中可能已存在的任何封闭引号。重定向到 ""
是有效的语法。它会因运行时错误而失败,但不会因语法错误而失败。但如果 %1 为空,它就不会被执行,所以没关系。
我也会在 IF 条件中使用 "%~1"
而不是 [%1]
:它更加稳健。
我还会重构代码以使用单个 IF,但这更多的是风格问题。
if not "%~1"=="" (
echo Appending this log to %1
type c:\test.log >>"%~1"
)
关于batch-file - 该命令的语法不正确 TYPE 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765901/