批量替换换行符

问题描述 投票:0回答:1

在批处理文件中,我有一个带有文本的变量,其中可能包含以分号分隔的空格。 该变量可能为空,并且文本尾部有分号。

set Something=1 2;3 4;5 6;
set Nothing=

如何打印每一个以分号分隔的内容?

1 2
3 4
5 6

尝试使用替换,但不知道如何指定换行符:

echo %Something:;=<<WhatToUseForLinefeed>>%
batch-file
1个回答
0
投票
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"
,则引号将成为分配值的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.