遇到空间时如何垂直分割单词?

时间:2017-08-01 11:46:42

标签: batch-file

我有一个Sample.txt文件,其内容为:

Hi How Are You?

使用批处理文件,我必须在每个空格后垂直分割单词。输出应该是这样的:

Hi
How
Are
You?

2 个答案:

答案 0 :(得分:0)

for /f "delims=" %%a in (sample.txt) do (
  for %%b in (%%a) do (
    echo %%b
  )
)

第一个(外部)for处理文件中的每一行,第二个(内部)for处理该行中的每个单词。

答案 1 :(得分:0)

您可以使用以下命令将文件读入变量:

< "Sample.txt" set /P LINE=""

或者,如果该行超过1021字节(!),则使用:

for /F usebackq^ delims^=^ eol^= %%L in ("Sample.txt") do (
    set "LINE=%%L"
)

然后你可以用换行符替换每个 SPACE ,如下所示:

setlocal EnableDelayedExpansion
echo(!LINE: =^

!
endlocal

或者,首先在变量中存储换行符,如下所示:

(set LF=^

)
setlocal EnableDelayedExpansion
echo(!LINE: =^%LF%%LF%!
endlocal

上述每个代码变量中的空行是必需的,以便在输出中获得换行符。用户this answer参考jeb了解此新线黑客的工作原理。

我在这里使用delayed expansion是为了避免使用特殊字符时出现问题。