我需要在批处理脚本中逐字逐句阅读文本文件的内容。这些单词是空格分隔的。我尝试了这个,但它不起作用,只需要第一个字:
for /f "delims= " %%i in (%OUTPUT_FILE%) do echo %%i
我也试过这个,但也不行:
for /f "tokens=* delims= " %%i in (%OUTPUT_FILE%) do echo %%i
答案 0 :(得分:5)
for /f "delims=" %%a in (file.txt) do for %%b in (%%a) do echo %%b
分隔符:空格,制表符,0xFF,,
;
=
。
答案 1 :(得分:0)
标记控制从可用的分隔符拆分的元素。因此,根据您的总体目标,可能值得追求令牌来检索所需的变量。如果您知道文本文件的每一行中有多少元素,例如每行上的配置文件或键值对,您可以利用'tokens ='来获得所需的内容。
for /f "tokens=1,2 delims= " %%a in (%OUTPUT_FILE) do echo %%a %%b
如果每行的项目未知,那么线环内的Endoro的单词循环绝对是可行的方法。
答案 2 :(得分:0)
这是一个纯批处理解决方案,应该能够处理文件中的任何内容。它使用外部FOR / F读取每一行,并用换行符替换每个空格。它用内部FOR / F读取每个结果行(单词)。
@echo off
setlocal disableDelayedExpansion
:: Define LF to contain a newline character
set LF=^
:: Above 2 blank lines are critical - DO NOT REMOVE
for /f "eol= tokens=*" %%A in (%OUTPUT_FILE%) do (
set "ln=%%A"
setlocal enableDelayedExpansion
for %%L in ("!LF!") do for /f "eol= " %%W in ("!ln: =%%~L!") do echo %%W
endlocal
)
如果使用执行正则表达式搜索的hybrid JScript/batch utility called REPL.BAT并在stdin上替换并将结果写入stdout,则生活会简单得多。
假设REPL.BAT位于您当前的文件夹中,或者更好,位于PATH中的某个位置:
for /f "eol= " %%W in ('repl " " "\n" x ^<%OUTPUT_FILE%') do echo %%W