版本=%version:=%-是否有充分理由使用它?

时间:2019-01-09 19:59:59

标签: batch-file

我正在处理一些由离开公司很久的人编写的代码。内容为:

REM         XX.XXX      YYYYMMDD Author Description 
REM version=4.3   &:20170418 comment comment comment 
REM version=4.4   &:20170519 comment comment comment
SET version=4.5c  &:20170604 comment comment comment
SET "version=%version: =%"

在迷惑了这一点之后,我们终于弄清楚了两件事:一,&事情告诉DOS新命令在同一行,然后:date仅仅因为DOS没有而被抛出了。知道该怎么办。

但是接下来我们将SET“ version =%version:=%”废话了。

到目前为止,我能推断出的是它会删除空格,所以如果我这样做的话:

SET version=4.5 c
SET "version=%version: =%"
ECHO %version%

我将在屏幕上显示“ 4.5c”。

我在网上任何地方都找不到有关“:=%”业务的任何信息。有充分的理由这样做吗?

1 个答案:

答案 0 :(得分:2)

发生了什么事?:

这类似于变量编辑/替换,或用其他术语syntax-replacement。这允许您执行的操作是获取一个字符串,并替换其中的字符或单词,然后替换现有的字符串或创建一个新的修改后的字符串。

以示例SET "version=%version: =%"为例,这将修改字符串version,并从字符串中删除所有空格。

此方法的正项:

由于需要修改某些字符串或代码,因此可以非常方便地使用纯批处理选项来替换文本文件中的单词从字符串中删除单词,< em>在单词后添加逗号,甚至删除字符串中的最后 x 个字符

语法替换通常用于无法在for循环中解决的问题或需要在使用前进行调整的字符串,例如文件夹路径。在for循环中,当处理包含\的字符串并尝试使用delims=\时,有时需要将其更改为冲突较少的字符,如;-{{1} }。用途无穷。

此方法的缺点:

这是编辑字符串的一种非常简单的方法,但是会带来一个负面影响,即您必须先使用SET "String=%String:\=;"来在基本字符串中转义特殊字符,然后才能编辑具有特殊字符的字符串。以下是一个示例:

  • ^-这将破坏语法替换代码为SET "version=Hello & There" 正在调用新命令。
  • &-这是“忽略” SET "version=Hello ^& There"符号的正确方法 进行处理。

在CMD窗口中检出&,以获取更多信息。