3 回答
TA贡献1856条经验 获得超5个赞
下面的帖子有很大帮助,但没有按照我在问题中所说的那样做,我需要处理整个整行。这是我发现的工作方式。
for /F "tokens=*" %%A in (myfile.txt) do [process] %%A
带有星号(*)的标记关键字将拉出整行的所有文本。如果你没有放入星号,它只会拉动该行的第一个单词。我认为它与空间有关。
我感谢所有的帖子!
如果文件路径中有空格,则需要使用usebackq
。例如。
for /F "usebackq tokens=*" %%A in ("my file.txt") do [process] %%A
TA贡献1797条经验 获得超6个赞
从Windows命令行参考:
要解析文件,忽略注释行,请键入:
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
此命令解析Myfile.txt中的每一行,忽略以分号开头的行,并将第二个和第三个标记从每个行传递给FOR主体(标记由逗号或空格分隔)。FOR语句的主体引用%i来获取第二个标记,%j来获取第三个标记,%k来获取所有剩余的标记。
如果您提供的文件名包含空格,请在文本周围使用引号(例如,“文件名”)。要使用引号,必须使用usebackq。否则,引号将被解释为定义要解析的文字字符串。
顺便说一句,您可以在大多数Windows系统上找到命令行帮助文件:
"C:\WINDOWS\Help\ntcmds.chm"
TA贡献1808条经验 获得超4个赞
在批处理文件中,您必须使用%%
而不是%
:(类型help for
)
for /F "tokens=1,2,3" %%i in (myfile.txt) do call :process %%i %%j %%kgoto thenextstep:processset VAR1=%1set VAR2=%2set VAR3=%3COMMANDS TO PROCESS INFORMATIONgoto :EOF
这样做:for命令末尾的“do call:process %% i %% j %% k”将forfile命令中获取的信息从myfile.txt传递给“process”'子例程'。
在批处理程序中使用for命令时,需要对变量使用双%符号。
以下行将那些变量从for命令传递给进程'sub routine',并允许您处理此信息。
set VAR1=%1 set VAR2=%2 set VAR3=%3
如果需要更多示例,我会对这个确切的设置有一些非常高级的用法,我愿意分享。当然,根据需要添加您的EOL或Delims。
- 3 回答
- 0 关注
- 2408 浏览
添加回答
举报