我正在处理一些由离开公司很久的人编写的代码。内容为:
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”。
我在网上任何地方都找不到有关“:=%”业务的任何信息。有充分的理由这样做吗?
答案 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窗口中检出&
,以获取更多信息。