【问题标题】:Batch File Techinque for Set /A and quotingSet /A 和引用的批处理文件技术
【发布时间】:2014-11-10 15:00:25
【问题描述】:

我一直想知道如果我的脚本正在进行计算,如何以及何时使用引号。例如,

Set /A exp=%some%+(!calculation!-0).

我知道,如果该行使用括号,并且我在 IF 块内,我应该使用

Set /A exp="%some%+(!calculation!-0)".

引号只是围绕等号之后的部分。

除此之外,从变量名引用到行尾,

Set /A "exp=%some%+(!calculation!-0)"

似乎也可以。

我想知道,有没有“正确”的方式来使用SET /A?批处理脚本的正确/最佳技术是什么?我什么时候应该使用引号?除非出现错误,否则它们大多是可选的吗?

谢谢。

【问题讨论】:

    标签: batch-file coding-style set quotes


    【解决方案1】:

    如果你不使用/a来尝试它更有意义:如果你在=之后使用",它将成为变量的一部分;如果您在= 之前使用它,它会分隔表达式(通常用于避免意外或在变量中插入预期的尾随空格)

    C:\>set x="1+3"
    C:\>set x
    x="1+3"
    
    C:\>set "x=2+5"
    C:\>set x
    x=2+5
    
    C:\>set x=text  
    C:\>echo -%x%-
    -text  -
    
    C:\>set "x=text"  
    C:\>echo -%x%-
    -text-
    

    (注意,set x=text 和 set "x=text" 后面有两个“意外”空格)

    使用/a,qoutes 只是被剥离(/a 被添加到以前的 setcommand 来自“good old DOS”)

    【讨论】:

    • 但问题是关于引号的使用,特别是当SET用于计算/a的表达式时
    • Swwwweeeet - 谢谢 Stephan ~ 现在完全有道理了。谢谢,我一直想知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2016-06-17
    • 1970-01-01
    • 2011-05-10
    • 2012-01-22
    • 2016-01-14
    相关资源
    最近更新 更多