首页 > 解决方案 > 批量跳过可选参数

问题描述

我运行一个批处理脚本,我想在其中使用第三个输入作为可选输入。我试过

some code...

If Not "%~3"=="" (

    echo hello world >> %3
)
some code...

只要我实际上传递了一些第三个参数,脚本就可以正常工作,但是一旦我跳过它就会中断。不幸的是,我不知道批量错误处理。我什至不能说为什么程序会中断。

你能帮我处理错误或解决方案吗?

最好的,彼得

标签: batch-fileparameters

解决方案


所以基本上这是找到正确答案的关键信息:

Windows 命令处理器在执行命令 IF 之前处理以 match 开头(并以 match 结尾)的整个命令块。因此,在没有将第三个参数字符串传递给批处理文件的情况下,命令块必须在语法上完全正确。

最简单的存档方法是:

If Not "%~3" == "" ( echo hello world >> "%~3" )

因为 %~3 周围的额外双引号将确保语法正确。

使用以下方法可以更安全:

If Not "%~3" == "" (
    If Exist "%~3" ((Echo hello world) 1>> "%~3") 
    Else ((Echo hello world) 1> "%~3" 2> NUL)
)

推荐阅读