的FOR/F命令读行文件的和令牌按照“令牌= delims =”选项分开它们。默认情况下,“标记”仅指代该行中的第一个标记,“delims”包含空格和制表符(如果未给定)。这FOR命令:
for /f "usebackq" %%a in ("%TraderWorkspaceFile%") do echo %%a
会显示:
ABC
ADD
ABCSS
而
for /f "tokens=2 usebackq" %%a in ("%TraderWorkspaceFile%") do echo %%a
会显示:
1000
2000
3000
请注意, “delims =” 是一样的默认值,所以没用,但“delims = “(无界限)是在第一个标记中包含整行的一种技巧。
for /f "usebackq delims=" %%a in ("%TraderWorkspaceFile%") do (
set line=%%a
call :processToken
)
goto :eof
:processToken
for /f "tokens=1 delims= " %%f in ("%line%") do (
echo Got one token: %%f
)
goto :eof
会正确显示的第一个标记每一行的,虽然:
:processToken
for /f %%f in ("%line%") do (
echo Got one token: %%f
)
goto :eof
会做同样的事情......
你可能会得到同样个人空间中 - 或 - 通过子程序的参数以这种方式制表符分隔标记:
:processLine
echo First token: %1, second token: %2, third one: %3
goto :eof
必须调用这种方式(而不是电话:processToken):
call :processLine %line%
所有问题报告都应该有最小的代码示例,表现出问题(属于您),预期的行为(同样,您提供这个)和_actual_行为(不,不能在任何地方看到):-) – paxdiablo 2012-02-21 22:04:35