批处理文件 FOR /f 令牌
Posted
技术标签:
【中文标题】批处理文件 FOR /f 令牌【英文标题】:Batch file FOR /f tokens 【发布时间】:2011-10-21 10:44:14 【问题描述】:谁能逐行解释以下代码的工作原理。我真的迷路了。我一直在尝试学习如何使用 FOR 命令,但我不明白这一点。
@echo off
for /f "tokens=* delims= " %%f in (myfile) do (
set line=%%f
call :processToken
)
goto :eof
:processToken
for /f "tokens=1* delims=/" %%a in ("%line%") do (
echo Got one token: %%a
set line=%%b
)
if not "%line%" == "" goto :processToken
goto :eof
【问题讨论】:
【参考方案1】:for /f "tokens=* delims= " %%f in (myfile) do
这会逐行读取文件,删除前导空格(谢谢,jeb)。
set line=%%f
然后将line
变量设置为刚刚读取的行并
call :procesToken
调用一个子程序来处理该行
:processToken
是上述子程序的开始。
for /f "tokens=1* delims=/" %%a in ("%line%") do
然后将在/
处拆分行,但在第一个标记之后停止标记化。
echo Got one token: %%a
将输出第一个令牌和
set line=%%b
会将line
变量设置为该行的其余部分。
if not "%line%" == "" goto :processToken
如果line
还不是空的(即所有已处理的令牌),它会返回到开头,继续该行的其余部分。
【讨论】:
+1,但第一个FOR /F "tokens=* delims= "
删除了行中的所有前导空格以上是关于批处理文件 FOR /f 令牌的主要内容,如果未能解决你的问题,请参考以下文章