中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 11:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]for语句的问题? 查看 651 回复 3
楼 主 [求助]for语句的问题? 发表于 2007-11-15 09:28 ·  中国 黑龙江 大庆 大庆中基石油通信建设有限公司
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
我看了最强之dos命令 – for (是新手学习FOR语句的好资料),觉得收获很多,但由于对for理解还很浅,所有该文章中的许多知识都还是很难理解:
1.假设当前目录中有a1,a2,a3和子目录temp下有a4,a5,a6六个文本文件,只有a1和a4中有“zgk”内容.
那么,我执行
for /r . %a in (.) do @find "zgk" %a
为什么显示如下错误:
拒绝访问 - C:\TREE\.
拒绝访问 - C:\TREE\TEMP\
以.为循环范围,不是说for 只将子目录的结构(目录名)作为循环范围,而不包括里面的文件,那么为什么对当前目录tree也处理呢?
如果我只想对当前目录tree又不想对temp目录遍历,该怎么做?
2.看到这样的例子,但没有实践
有一个文本有如下内容:
Volume in drive D is DATA
Volume Serial Number is C47C-9908
Directory of D:\tmp
09/26/2001 12:50 PM 18,426 alg0925.txt
12/02/2001 04:29 AM 795 bsample.txt
04/11/2002 04:18 AM 2,043 invitation.txt
4 File(s) 25,651 bytes
0 Dir(s) 4,060,700,672 bytes free
for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a echo %a
执行显示结果:
alg0925.txt
bsample.txt
invitation.txt
不是跳到第5行,应该显示
bsample.txt
invitation.txt
对吗?
3.我试了该命令行
for %a in (c: d: e: f do @dir %a\   find "bytes free"
我改成了
for %a in (c: d: e: f:) do @dir %a |  find "bytes free">temp.txt
在cmd下执行,感觉有信息一闪而过,也生成了temp.txt,但它什么信息也没有啊,我该怎样实现查看各盘的空闲空间呢?
2 发表于 2007-11-15 10:15 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
1.
for /f "delims=" %a in ('dir /b /s /a-d *.txt') do find "zgk" %~sa
2.
for /f "skip=5 tokens=5" %a in (todel.txt) do @if @if not "%a"=="" echo %a echo %a
skip=n - 指在文件开始时忽略的行数。
3.
你可能是中文的系统
find "可用字节">>temp.txt
3 发表于 2007-11-15 10:39 ·  中国 黑龙江 大庆 大庆中基石油通信建设有限公司
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
Originally posted by junchen2 at 2007-11-15 10:15:
1.
for /f "delims=" %a in ('dir /b /s /a-d *.txt') do find "zgk" %~sa
2.
for /f "skip=5 tokens=5" %a in (todel.txt) do @if @if not "%a"=="" echo ...

谢谢,第1个问题解决了.
第2个问题我想请教,skip=5,那么条过5行,就应该是从第6行开始执行,
那应该是显示
bsample.txt
invitation.txt
而不应该是
alg0925.txt
bsample.txt
invitation.txt
这样理解对吗?
我的系统是中文系统,但即使
find "空闲字节">>temp.txt
也还是生成一个零字节的文本文件,不能查看到任何盘符的空闲空间啊
能帮助在解释一下吗?
4 发表于 2007-11-15 10:55 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
todel.txt正文前可能有空格,我测试为
invitation.txt
free

3。
find "空闲字节">>temp.txt
find "可用字节">>temp.txt
论坛跳转: