中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 04:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » tokens=后可以是变量吗?? 查看 1,300 回复 14
楼 主 tokens=后可以是变量吗?? 发表于 2007-04-03 05:00 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
如题如下:
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 ]
2 发表于 2007-04-03 05:06 ·  中国 广西 梧州 电信
初级用户
积分 29
发帖 12
注册 2007-03-16 04:29
19年会员
UID 81902
性别 男
状态 离线
这个....没试过...
3 发表于 2007-04-03 05:17 ·  中国 湖北 武汉 电信
中级用户
★★
scriptlover
积分 328
发帖 131
注册 2007-03-25 22:17
19年会员
UID 82910
性别 男
状态 离线
楼主自己试一下不就知道吗???
4 发表于 2007-04-03 05:21 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
偶是菜鸟。即使可以。偶也试不出来的。o(∩_∩)o...哈哈。
5 发表于 2007-04-03 05:27 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
我以前试过,没成功,也许我方法不对。

但至少你可以 CALL 另一段,用 %1 这类参数传进去
6 发表于 2007-04-03 05:29 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
答案是可以的,测试文件如下,测试环境XP SP2


@echo off&setlocal
set tk=2
for /f "tokens=%tk% delims=:" %%a in ("hello:world:good") do @echo %%a
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2007-04-03 05:40 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
如楼上是可以实现的。
问题就在这,此时tk=2的。
但要求tk是会变化的。如set /a tk=!tk!+1
似乎就无法实现了。
8 发表于 2007-04-03 05:48 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线

@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


我记得我以前写的是类似这样的
9 发表于 2007-04-03 05:52 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
可以告诉你没有似乎,只是灵活应用的问题,看下面实例:


@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
我今后在论坛的目标就是做个超级坏人!!!
10 发表于 2007-04-03 05:53 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
谢谢各位大侠的帮助。似乎明白了点。
再次感谢。
11 发表于 2007-04-03 05:58 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
看了 9527 的代码感觉又学到了点新东西
12 发表于 2007-04-03 06:08 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
其实我也晕菜啦,用不着SETLOCAL 和 ENDLOCAL效果应该也是一样的,刚才看了一下他的set /a tk=!tk!+1,我想楼主一定没有试验就做出了这样的判断,其实是可以的
只不过set /a tk=!tk!+1这句一定要加上参数/a ,这个参数可起到决定性的作用了
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
komafd2 +1 2008-02-22 16:35
我今后在论坛的目标就是做个超级坏人!!!
13 发表于 2008-01-11 20:47 ·  中国 福建 泉州 电信
新手上路
积分 12
发帖 6
注册 2008-01-11 19:20
18年会员
UID 108333
性别 男
状态 离线
学习。。 呵呵
14 发表于 2008-01-24 15:40 ·  中国 广西 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
我也弄来试试看
15 发表于 2008-01-24 18:16 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
"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


我回会员的一段消息,既然写了就贴这里了,已经全中文了看不懂不要再问了
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
dosz +1 2009-03-04 03:26
第一高手 第二高手

论坛跳转: