批处理:如何在不更改其他所有内容的情况下替换变量中文本的特定部分?

时间:2019-05-07 17:12:06

标签: batch-file

因此,我正在尝试创建一个搜索引擎,当您输入搜索字符串时,请用“ +”替换空格,如果有人指出我可以使用哪些命令来实现这一点,将很有帮助。

到目前为止,我还没有发现任何有相同问题的人,这就是为什么我将其发布在这里。我发现someone具有一种检测变量中空格的方法:

if not "%VAR%"=="%VAR: =%"

但无法替换它们。

有任何提示吗?

P.S .:请不要向我推荐PowerShell或其他脚本语言/方法,就像我看到的一些人一样,我有使用批处理的理由,并且我会坚持下去。

1 个答案:

答案 0 :(得分:0)

所以让我解释一下替换是如何工作的。

set "var=This is a line with spaces"
set "var=%var: =+%"
echo %var%

在第二个set中,我们再次从set var%var%,但是我们使用空格替换。从:=的所有内容都是搜索功能,从=%的所有内容都是替换功能。因此,%var: =+%意味着找到所有空间并替换为+,因此上述代码的结果将是:

This+is+a+line+with+spaces

显然,该变量可以多次操作:

set "var=This is a line with spaces"
set "var=%var: =+%"
set "var=%var:spaces=pluses%
echo %var%

您还可以使用替换来进行比较,而无需使用set进行替换:

set "var=This is a line with spaces"
if /i "%var: =+%"=="This+is+a+line+with+spaces" echo Matched!

我建议您通过从cmdline运行set /?阅读帮助。