Board logo

标题: tokens=后可以是变量吗?? [打印本页]

作者: wudixin96     时间: 2007-4-3 05:00    标题: tokens=后可以是变量吗??

如题如下:
set tk=2
for /f "tokens=%tk%" in (...) do (......& set /a tk=!tk!+1)

这样可以吗??

[ Last edited by wudixin96 on 2007-4-3 at 05:01 AM ]
作者: pestally     时间: 2007-4-3 05:06
这个....没试过...
作者: stornager     时间: 2007-4-3 05:17
楼主自己试一下不就知道吗???
作者: wudixin96     时间: 2007-4-3 05:21
偶是菜鸟。即使可以。偶也试不出来的。o(∩_∩)o...哈哈。
作者: NaturalJ0     时间: 2007-4-3 05:27
我以前试过,没成功,也许我方法不对。

但至少你可以 CALL 另一段,用 %1 这类参数传进去
作者: 9527     时间: 2007-4-3 05:29
答案是可以的,测试文件如下,测试环境XP SP2
@echo off&setlocal
set tk=2
for /f "tokens=%tk% delims=:" %%a in ("hello:world:good") do @echo %%a

作者: wudixin96     时间: 2007-4-3 05:40
如楼上是可以实现的。
问题就在这,此时tk=2的。
但要求tk是会变化的。如set /a tk=!tk!+1
似乎就无法实现了。
作者: NaturalJ0     时间: 2007-4-3 05:48

@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,3) do (
        set tk=%%i
        echo !tk!
        for /f "tokens=!tk! delims=:" %%a in ("hello:world:good") do @echo %%a
        call :callfor !tk!
        )
pause

:callfor
for /f "tokens=%1 delims=:" %%a in ("hello:world:good") do @echo %%a
我记得我以前写的是类似这样的
作者: 9527     时间: 2007-4-3 05:52
可以告诉你没有似乎,只是灵活应用的问题,看下面实例:
@echo off&setlocal
:loop
set /a tk+=1
if %tk% equ 10 goto:eof
setlocal
echo %tk%
for /f "tokens=%tk% delims=:" %%a in ("hello:world:good:thank:very:feel:9527:bagpipe:lxmxn") do @echo %%a
endlocal
goto loop

作者: wudixin96     时间: 2007-4-3 05:53
谢谢各位大侠的帮助。似乎明白了点。
再次感谢。
作者: NaturalJ0     时间: 2007-4-3 05:58
看了 9527 的代码感觉又学到了点新东西
作者: 9527     时间: 2007-4-3 06:08
其实我也晕菜啦,用不着SETLOCAL 和 ENDLOCAL效果应该也是一样的,刚才看了一下他的set /a tk=!tk!+1,我想楼主一定没有试验就做出了这样的判断,其实是可以的
只不过set /a tk=!tk!+1这句一定要加上参数/a ,这个参数可起到决定性的作用了
作者: gugewang     时间: 2008-1-11 20:47
学习。。 呵呵
作者: moniuming     时间: 2008-1-24 15:40
我也弄来试试看
作者: fastslz     时间: 2008-1-24 18:16


  Quote:
"tokens=*"是什么意思,具体是什么功能`
能给我解释一下么`麻烦你了`

for /?自己看
@echo off
echo ab cd ef gh ij kl>1.txt
for /f "tokens=*" %%i in (1.txt) do echo 文本全部字符集%%i
for /f "tokens=1" %%i in (1.txt) do echo 文本第1个字符集%%i
for /f "tokens=3" %%i in (1.txt) do echo 文本第3个字符集%%i
for /f "tokens=6" %%i in (1.txt) do echo 文本第6个字符集%%i
echo  其实这是简化的写法,因为for /f 默认空格为分隔见下标准写法
for /f "tokens=1 delims= " %%i in (1.txt) do echo 文本第1个字符集%%i
for /f "tokens=3 delims= " %%i in (1.txt) do echo 文本第3个字符集%%i
for /f "tokens=6 delims= " %%i in (1.txt) do echo 文本第6个字符集%%i
echo "tokens=6 delims= " 取以空格为分隔的第6个字符集
echo "tokens=6 delims=," 取以逗号为分隔的第6个字符集
pause
我回会员的一段消息,既然写了就贴这里了,已经全中文了看不懂不要再问了