批量跳过可选参数

问题描述 投票:1回答:1

我运行了一个批处理程序,我想使用第三个输入作为可选输入。我尝试了

some code...

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

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

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

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

最好的,Peter

batch-file parameters
1个回答
1
投票

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

Windows命令处理器在执行IF命令之前 会先处理整个命令块,以(和匹配)为起点,然后再执行。所以在没有向批处理文件传递第三个参数字符串的情况下,命令块必须还是完全语法正确的。

最简单的归档方式就是。

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)
)
© www.soinside.com 2019 - 2024. All rights reserved.