中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 12:26
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何在for....(set) do ...的句式里联接更多文件类型。(已结) 查看 1,324 回复 11
楼 主 如何在for....(set) do ...的句式里联接更多文件类型。(已结) 发表于 2008-08-11 02:00 ·  中国 广东 汕头 潮阳区 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
@echo off
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir/a-d/b/s %%a:\*.doc') do echo %%i
)
pause


我想查找更多类型的文件,*.txt *.rar *.doc *.excl 在in 后括号如何联接起来。
for /f "delims=*" %%i in ('dir/a-d/b/s %%a:\*.doc,*.txt,*.rar') do echo %%i这样用,联接,只能查到当前目录下第二类型以后的文件

变通了一下改成如下代码

@echo off
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
set file=*.rar *.doc
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir/a-d/b/s %%a:\%file%') do echo %%i>>c:\file.txt
)2>nul
pause

不成,只能遍历RAR文件

[ Last edited by haiou327 on 2008-8-20 at 08:32 PM ]
2 发表于 2008-08-15 17:50 ·  中国 湖北 武汉 电信
中级用户
★★
积分 471
发帖 207
注册 2007-05-03 14:53
19年会员
UID 87369
性别 男
状态 离线
怀疑这个程序是不是有问题,你真的就可以得到每个盘符下的*.doc吗?
3 发表于 2008-08-16 01:20 ·  中国 广东 汕头 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
第一段是没有问题的!!!!!!!!!!!!!!!!!!!!遍历全磁盘DOC文件.
4 发表于 2008-08-16 22:38 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir /a-d /b /s %%a:\*.doc *.txt *.rar') do echo %%i
)
pause
5 发表于 2008-08-17 20:29 ·  中国 广东 汕头 潮阳区 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
HAT
这种方法我第一时间就试过,就是不能显示第二个类型以后的文件,
我改成如下
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir /a-d /b /s %%a:\*.doc *.rar') do echo %%i>>d:\cndos\file.txt
)
pause


可以遍历*.doc 不能遍历*.rar

[ Last edited by haiou327 on 2008-8-17 at 08:32 PM ]
6 Re 5楼 发表于 2008-08-17 22:29 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我在本机测试的时候,可以匹配所有格式。
7 发表于 2008-08-19 18:08 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by HAT at 2008-8-17 22:29:
我在本机测试的时候,可以匹配所有格式。

应该是不行的,再多测试几遍吧。
8 发表于 2008-08-19 21:27 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
不能遍历*.rar,是不是一个rar文件都搜索不到?
不知道是否和系统环境有关系,我的环境WinXP SP3 + CMD
9 发表于 2008-08-19 23:55 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by HAT at 2008-8-19 21:27:
不能遍历*.rar,是不是一个rar文件都搜索不到?
不知道是否和系统环境有关系,我的环境WinXP SP3 + CMD

dir /s/b/a-d C:\*.txt *.rar 相当于 dir /s/b/a-d C:\*.txt 和 dir /s/b/a-d *.rar ,前者可以搜索C盘下搜有的txt文件,但是后者却只能搜索当前目录下(包括子目录)中的所有rar文件,当前目录指的就是批处理运行时所处的目录。
10 发表于 2008-08-20 00:13 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
多谢版主指点
@echo off
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir /a-d /b /s %%a:\*.doc %%a:\*.txt %%a:\*.rar') do echo %%i
)
pause
11 发表于 2008-08-20 20:23 ·  中国 广东 汕头 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
晕乎了,10楼这样的代码,以前也曾测试过没有成功,
今天一试成功了.
邪了门
@echo off
set drv=c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%drv%) do (
for /f "delims=*" %%i in ('dir /a-d /b /s %%a:\*.doc %%a:\*.xls %%a:\*.rar') do echo %%i
)
pause
12 发表于 2008-08-20 20:31 ·  中国 广东 汕头 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
还是感谢xmxn和HAT的热心回帖.
论坛跳转: