Board logo

标题: 如何在for....(set) do ...的句式里联接更多文件类型。(已结) [打印本页]

作者: haiou327     时间: 2008-8-11 02:00    标题: 如何在for....(set) do ...的句式里联接更多文件类型。(已结)


@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 ]
作者: ThinKing     时间: 2008-8-15 17:50
怀疑这个程序是不是有问题,你真的就可以得到每个盘符下的*.doc吗?
作者: haiou327     时间: 2008-8-16 01:20
第一段是没有问题的!!!!!!!!!!!!!!!!!!!!遍历全磁盘DOC文件.
作者: HAT     时间: 2008-8-16 22:38

@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

作者: haiou327     时间: 2008-8-17 20:29
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 ]
作者: HAT     时间: 2008-8-17 22:29    标题: Re 5楼

我在本机测试的时候,可以匹配所有格式。
作者: lxmxn     时间: 2008-8-19 18:08


  Quote:
Originally posted by HAT at 2008-8-17 22:29:
我在本机测试的时候,可以匹配所有格式。

应该是不行的,再多测试几遍吧。
作者: HAT     时间: 2008-8-19 21:27
不能遍历*.rar,是不是一个rar文件都搜索不到?
不知道是否和系统环境有关系,我的环境WinXP SP3 + CMD
作者: lxmxn     时间: 2008-8-19 23:55


  Quote:
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文件,当前目录指的就是批处理运行时所处的目录。
作者: HAT     时间: 2008-8-20 00:13
多谢版主指点
@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

作者: haiou327     时间: 2008-8-20 20:23
晕乎了,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

作者: haiou327     时间: 2008-8-20 20:31
还是感谢xmxn和HAT的热心回帖.