首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >version=%version:=% -有充分的理由使用它吗?

version=%version:=% -有充分的理由使用它吗?
EN

Stack Overflow用户
提问于 2019-01-09 19:59:59
回答 1查看 250关注 0票数 0

我正在处理一些代码,这些代码是由一个早已离开公司的人编写的。它的内容如下:

代码语言:javascript
复制
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: =%"

在对此进行了困惑之后,我们终于发现了两件事:第一,这个& thing可以告诉DOS一个新命令在同一行中,然后:date就被抛出了,因为DOS不知道该如何处理它。

但是,我们到了"version=%version:=%“这组胡说八道。

到目前为止,我所能得出的结论是,它将删除空间,因此如果我这样做,那么:

代码语言:javascript
复制
SET version=4.5 c
SET "version=%version: =%"
ECHO %version%

我会让"4.5c“回放到屏幕上。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 20:29:59

,怎么回事?:

这看起来像变量编辑/替换,或者用其他术语表示语法替换。这允许您做的是取一个字符串,并替换它中的字符或单词,或者替换现有的字符串,或者创建一个新的修改字符串。

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

对此方法的肯定:

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

语法替换通常用于在for循环中无法解决的问题,或者在使用之前需要调整的字符串,例如文件夹路径。在for循环中,当处理包含\的字符串并尝试使用delims=\时,有时需要将其更改为冲突较小的; - SET "String=%String:\=;"字符。用途是无穷无尽的。

这种方法的否定:

这是编辑字符串的一种非常简单的方法,但也可能带来负面影响,即如果不首先使用^来转义基字符串中的特殊字符,就不能编辑带有特殊字符的字符串。这方面的一个例子如下:

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

有关更多信息,请查看CMD窗口中的Set /?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54117443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档