标题: [文件操作] 【已解决】批处理BAT如何在查找文件时排除指定目录? [打印本页]
作者: fa1120ewja 时间: 2014-3-19 16:44 标题: 【已解决】批处理BAT如何在查找文件时排除指定目录?
本帖最后由 fa1120ewja 于 2014-3-22 16:05 编辑
用二楼apang的方法实现了,是我自己才疏学浅,抱歉抱歉。
谢谢apang,谢谢大家热心帮忙。
-------------------------------
1. e:\
2. e:\aaaa\1.txt
3. e:\bbbb\1.txt
4. e:\cccc\1.txt
5. e:\cccc\1111\1.txt
6. e:\cccc\2222\1.txt
7. e:\cccc\3333\1.txt
要求:查找E盘下所有.txt结尾的文件,并显示结果,但是不要在"2."和"7."的目录下查找。
注意是不要查找,而不是查找以后不显示这两个的结果。
谢谢大家。
作者: apang 时间: 2014-3-19 17:52
dir 没有带排除功能的开关,可以借助xcopy的exclude排除功能实现,像这样:- @echo off
- (echo,\2.\&echo,\7.\)>$
- xcopy /lscy /exclude:$ e:\*.txt c:\
- pause
复制代码
作者: fa1120ewja 时间: 2014-3-20 10:55
回复 2# apang
谢谢回复,因为我需要实现的,在查找后并不单单是复制,所以xcopy只能放后考虑了。
不知道大家还有没有其他更好的办法。
作者: DAIC 时间: 2014-3-20 11:20
试试UnxUtils里面的find.exe的-prune参数
作者: apang 时间: 2014-3-20 11:39
本帖最后由 apang 于 2014-3-22 21:37 编辑
回复 3# fa1120ewja
看来你对xcopy知之甚少,并且根本就没有测试
不嫌麻烦的话,也可以这样:- @echo off
- set "abc=1" & set "123=1"
- Rem abc 及 123 是需要排除的目录
- call :GetTxtFile "e:"
- pause & exit /b
-
- :GetTxtFile
- for %%a in ("%~1\*.txt") do echo,%%a
- for /f "delims=" %%a in ('dir /ad/b "%~1\" 2^>nul') do (
- if not defined %%~nxa (
- call :GetTxtFile "%~1\%%a"
- )
- )
复制代码
作者: DAIC 时间: 2014-3-20 12:45
回复 3# fa1120ewja
xcopy命令的 /l 选项只是显示将要被复制的文件列表,并不会真正的进行复制。根据它输出的文件列表,可以进行你需要的后续操作。
作者: fa1120ewja 时间: 2014-3-22 16:02
回复 2# apang
谢谢,用xcopy /l参数实现了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |