![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 14:55 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于使用for循环取文件名作变量的问题 |
| 可打印版本 1,285 / 6 |
| 第1楼 bobofu | 发表于 2008-11-25 19:30 |
| 新手上路 发帖 8 积分 13 | |
|
关于使用for循环取文件名作变量的问题 【情景】文件夹下有一批.txt文件,需要逐一读取文件名,并以文件名作为参数执行后续的处理。后续处理是从每个文件中按规则提取相应数据生成另一个文件。
【测试代码】 for %%a in ("*.txt") do ( set fff=%%a echo %%a >> m.txt for /f "delims=" %%i in (%%a) do ( set line=%%i set flag=!line:~2,1! set data1=!line:~3,10! set data2=!line:~11,10! if "!flag!"=="0" (echo !data1!>>a.txt) else (echo !data2!>>a.txt) ) ) 【问题】:文件名参数%%a似乎不能传到第二个for循环中,请帮助检查,谢谢 |
|
| 第2楼 huahua0919 | 发表于 2008-11-25 20:41 |
| 银牌会员 发帖 780 积分 1,608 | |
|
不知道上面的代码能否满足你的要求,没有测试 |
|
| 第3楼 terse | 发表于 2008-11-25 20:49 |
| 银牌会员 发帖 946 积分 2,404 | |
|
在一个 FOR 里用%%~na 不是可以省个FOR?
另 FOR里用dir/b *.txt 似乎好点 |
|
| 第4楼 hackate | 发表于 2008-11-25 21:04 |
| 中级用户 发帖 125 积分 228 | |
|
我感觉楼主的给出的代码并没有问题,很可能你的问题出在其他代码地方,如你是否有加延迟变量语句等?
|
|
| 第5楼 huahua0919 | 发表于 2008-11-25 21:07 |
| 银牌会员 发帖 780 积分 1,608 | |
|
RE: 3F
第一个FOR是提取当前文件夹下的所有txt文件,第二个FoR是提取每个TXT文件里满足相应条件的数据,不知terse兄的%%~na是何意? |
|
| 第6楼 bobofu | 发表于 2008-11-25 22:53 |
| 新手上路 发帖 8 积分 13 | |
|
huahua0919兄的代码完全正确,谢谢! huahua0919兄的代码完全正确,谢谢!
我的代码的问题: 1、没有加延迟变量语句 2、我选取文件名的代码是: for %%a in ("*.txt") do ( 而不是huahua0919兄的代码:for /f "delims=" %%a in ('dir/b *.txt') do ( 二者似乎有很大不同,前一个将后续生成的.txt文件也包含在内,而huahua0919兄的代码则只选取了原有的.txt文件。 第2个问题没有想明白为何。 |
|
| 第7楼 lovelymorning | 发表于 2008-11-26 11:55 |
| 初级用户 发帖 72 积分 131 | |
|
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.txt') do ( >>m.txt echo %%i set flag=!%%i:~2,1! set data1=!%%i:~3,10! set data2=!%%i:~11,10! if "!flag!"=="0" (>>a.txt echo !data1!) else (>>a.txt echo !data2!) ) 不知这样行不? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |