中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 06:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for /f中是否可使用通配符? 查看 1,467 回复 12
楼 主 for /f中是否可使用通配符? 发表于 2007-03-18 05:19 ·  中国 陕西 西安 电信
初级用户
积分 120
发帖 45
注册 2007-03-13 05:57
19年会员
UID 81568
性别 男
状态 离线
我想显示目下所以有的.txt文件
@FOR /F "usebackq delims= tokens=*" %i IN (*.txt) DO @ECHO %i

这个是错误在for /f的in后面的括号中*好像不能用来当作通配符。在for /d和for /r中都是可以的,不知道我的理解对不对?

于是我采用下面的方法
@FOR /F "usebackq delims= tokens=*" %i IN (`dir ^| find /i ".txt"`) DO @ECHO %i

这个可以,但有个问题,像a.txt.mp3这样的文件也会显示,不没有更好的解决办法。

[ Last edited by tianlijian on 2007-3-18 at 03:18 PM ]
test
2 发表于 2007-03-18 12:06 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

for /r .\ %a in (*.txt) do @echo %a
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tianlijian +2 2007-03-20 05:25
3 发表于 2007-03-18 22:52 ·  中国 江苏 连云港 联通
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
lxmxn兄用到了.,官方解释好像是枚举当前目录
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
4 发表于 2007-03-19 04:19 ·  中国 陕西 西安 电信
初级用户
积分 120
发帖 45
注册 2007-03-13 05:57
19年会员
UID 81568
性别 男
状态 离线
@FOR /F "usebackq delims= tokens=*"  %i IN (`dir ^| find /i ".txt"`) DO @ECHO %i

请为一下|前面为什么要使用^?

[ Last edited by tianlijian on 2007-3-18 at 10:06 PM ]
test
5 发表于 2007-03-19 05:40 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by tianlijian at 2007-3-18 15:19:
@FOR /F "usebackq delims= tokens=*"  %i IN (`dir ^| find /i ".txt"`) DO @ECHO %i

请为一下|前面为什么要使用^?


  for 命令规定: in后面的括号中的命令重定向符(> \ >> \ < \ |)前需要转义,即在其前面加上一个^来实现转义,否则会出错。
6 发表于 2007-03-19 21:45 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
@FOR /F "tokens=*" %i IN ('dir *.txt') DO @ECHO %i
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tianlijian +2 2007-03-20 05:24
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
7 发表于 2007-03-20 05:16 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
本人理解FOR语句如下:
FOR /F 只对字符串,命令,单个文件进行操作,
for /f .....in (" ") do ...
for /f .....in (文件名称) do ...
for /f .....in ('命令') do ...
我今后在论坛的目标就是做个超级坏人!!!
8 发表于 2007-04-07 11:36 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
Originally posted by lxmxn at 2007-3-17 11:06 PM:

for /r .\ %a in (*.txt) do @echo %a



for /r . \
.后面的\ 是否可以省略掉?
9 发表于 2007-04-07 12:41 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by logictianjin at 2007-4-6 22:36:
for /r . \
.后面的\ 是否可以省略掉?


试试不就知道啦?
10 发表于 2007-04-10 20:33 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
Originally posted by lxmxn at 2007-4-6 11:41 PM:


试试不就知道啦?


我觉得如果使用 for /r并且里带有通配符的话 完全可以不用.\ 如果集中没有通配符好象就要加点了 不知道我理解的对不对,我是初学者请指教

[ Last edited by logictianjin on 2007-4-10 at 07:56 AM ]
11 发表于 2007-06-14 13:57 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
for / f 总是不能完全弄明白.
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


12 发表于 2007-06-15 14:33 ·  中国 上海 徐汇区 电信
新手上路
积分 4
发帖 2
注册 2007-06-14 17:17
19年会员
UID 91324
性别 男
状态 离线
我觉得 for /r .\
这个跟for /r . 应该是一样的都表是该目录下所有子目录的。。。
for /r \这个表示该盘下所有目录
不知道我的理解是不是正确,指教
13 发表于 2009-08-06 23:40 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
19年会员
UID 62249
状态 离线
.\表示当前目录及其所有子目录如dir .\你看下就知道了。
论坛跳转: