![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 06:41 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for循环中如何对令牌使用变量??? |
| 可打印版本 969 / 9 |
| 第1楼 bd123456789 | 发表于 2007-07-05 09:44 |
| 中级用户 发帖 216 积分 360 | |
|
for循环中如何对令牌使用变量??? 注:循环赋予令牌变量2,3,4,5...100
rem 将变量放入令牌号,即依次提取第二个令牌,第三个令牌,,,...第100个令牌 for /l %%a in (2,1,100) do ( for /F "usebackq eol=; tokens='%%a' delims=$" %%i in (find.txt) do echo %%i) ) pause 我的目的是想在find文件中分别取得以$分隔的第二个、第三个、第四个、—第一百个字符 但结果总是说我的代码是错误的,即→此时不应有 '%a' delims=$"。 究意该如何写呢? [ Last edited by bd123456789 on 2007-7-5 at 10:58 AM ] |
|
| 第2楼 lxmxn | 发表于 2007-07-05 13:13 |
| 版主 发帖 4,938 积分 11,386 | |
|
测试了一下,发现for的tokens只能取到第31个字段,取第32个字段时,值为空。
可以试试下面这个: |
|
| 第3楼 #four# | 发表于 2007-07-05 15:03 |
| 中级用户 发帖 34 积分 209 | |
|
我对楼主的这段代码也试了,CMD不能识别FOR嵌套中的变量,不知道我的结论对不对。只能换个方式解决了。
|
|
| 第4楼 bd123456789 | 发表于 2007-07-05 15:23 |
| 中级用户 发帖 216 积分 360 | |
|
@echo off&setlocal enabledelayedexpansion
for /l %%i in (2,1,100) do ( set tk=%%i echo !tk! call :callfor !tk! ) pause :callfor for /F "delims=$ tokens=%1" %%a in (find.txt) do echo %%a 上述代码测试过了,能显示到第31个令牌! 非常奇怪????为什么不能读取第32个以后的.... 另外,版主能讲一下你的代码详细说明吗?有点看不懂 [ Last edited by bd123456789 on 2007-7-5 at 04:15 PM ] |
|
| 第5楼 Climbing | 发表于 2007-07-05 15:27 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
上面这个方法似乎是有效的,间接的实现了for的嵌套。 |
|
| 第6楼 bd123456789 | 发表于 2007-07-05 15:30 |
| 中级用户 发帖 216 积分 360 | |
|
测试了一下,发现for的tokens只能取到第31个字段,取第32个字段时,值为空。
一种情况是→是不是%1...只能使用到31个 第二种情况是→或者提供的文本一行超过了一定的限额,如63566个!! ??想不通 好像是最大递归层出错的意思,有什么办法能纠正呢? [ Last edited by bd123456789 on 2007-7-5 at 04:47 PM ] |
|
| 第7楼 lxmxn | 发表于 2007-07-05 19:01 |
| 版主 发帖 4,938 积分 11,386 | |
|
RE bd123456789:
非常奇怪????为什么不能读取第32个以后的.... 具体原因我也不是很清楚了。 另外,版主能讲一下你的代码详细说明吗?有点看不懂 思路是将文件中的分隔符替换成空格,传递给PK标签,用shift命令实现参数的移动。 具体命令说明请看帮助。 |
|
| 第8楼 lxmxn | 发表于 2007-07-05 19:03 |
| 版主 发帖 4,938 积分 11,386 | |
|
TO Climbing:
开始我也想到用这个方法,但是测试一下,发现取不到第32个字段,可能这也是for /F的一个局限性吧,所以换了一个方法。 |
|
| 第9楼 bd123456789 | 发表于 2007-07-05 21:06 |
| 中级用户 发帖 216 积分 360 | |
Originally posted by lxmxn at 2007-7-5 07:03 PM: 多谢指导! 经过测试,使用此方法,如果文件中有一些特殊符号,就会失效,如 & 看来此方法实用性不强. |
|
| 第10楼 lxmxn | 发表于 2007-07-06 01:38 |
| 版主 发帖 4,938 积分 11,386 | |
|
RE bd123456789:
批处理用来处理文本中的特殊符号一直让人头痛,建议用sed或者awk来处理。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |