Windows批处理语法 - 变量名称中冒号的含义

时间:2015-11-22 18:04:39

标签: batch-file syntax colon

我有一个.bat文件,我需要将其转换为linux .sh文件。

在这个.bat脚本中有一些我不明白的代码,我找不到合适的关键字来搜索它的含义。

以下是代码:

if not x%VERSION:SNAPSHOT=%==x%VERSION% (
        echo " ....  SNAPSHOT version detected "
        echo VERSION=%VERSION:SNAPSHOT=%%formatdate%_%formattime%
    )

我的主要问题在于使用“:”。 %VERSION:SNAPSHOT=% do?

是什么

我也不知道x%VERSION%x%VERSION:SNAPSHOT%中'x'的含义。

有人能帮我理解这个吗?

1 个答案:

答案 0 :(得分:7)

:(以及变量末尾的=)用于string substitution

在这种情况下,%VERSION:SNAPSHOT=%表示获取变量%VERSION%的内容并将任何字符串SNAPSHOT的实例替换为空。

正如迈克在评论中所说,双方x用于防止语法错误,如果%VERSION%只包含字符串SNAPSHOT,则会导致语法错误。传统上,您会看到使用引号而不是其他字符串,但这种方法完全有效。

整个if语句检查VERSION是否包含子字符串SNAPSHOT并运行其代码。