在批处理文件中,我有一个带有文本的变量,其中可能包含以分号分隔的空格。 该变量可能为空,并且文本尾部有分号。
set Something=1 2;3 4;5 6;
set Nothing=
如何打印每一个以分号分隔的内容?
1 2
3 4
5 6
尝试使用替换,但不知道如何指定换行符:
echo %Something:;=<<WhatToUseForLinefeed>>%
for %%e IN ("%something:;=" "%") DO IF "%%~e" neq "" ECHO %%~e
将
;
中的所有something
替换为" "
,所以for
看到的字符串是"1 2" "3 4" "5 6" ""
。这是四个用空格分隔的带引号的字符串。我们不想要最后一个,其中 %%e
将被分配为 ""
,因此如果 "%%~e"
是 ""
,则不要 echo
它。 %%e
将被引用,%%~e
取消引用 %%e
。
提示:使用
set "var=value"
设置字符串值 - 这可以避免尾随空格引起的问题。不要分配 "
或终端反斜杠或空格。从元素构建路径名 - 与直觉相反,它可能会使过程变得更容易。如果使用语法 set var="value"
,则引号将成为分配值的一部分。