[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理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."的目录下查找。

注意是不要查找,而不是查找以后不显示这两个的结果。

谢谢大家。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

dir 没有带排除功能的开关,可以借助xcopy的exclude排除功能实现,像这样:
  1. @echo off
  2. (echo,\2.\&echo,\7.\)>$
  3. xcopy /lscy /exclude:$ e:\*.txt c:\
  4. pause
复制代码
1

评分人数

TOP

回复 2# apang


    谢谢回复,因为我需要实现的,在查找后并不单单是复制,所以xcopy只能放后考虑了。

   不知道大家还有没有其他更好的办法。

TOP

试试UnxUtils里面的find.exe的-prune参数

TOP

本帖最后由 apang 于 2014-3-22 21:37 编辑

回复 3# fa1120ewja


    看来你对xcopy知之甚少,并且根本就没有测试

不嫌麻烦的话,也可以这样:
  1. @echo off
  2. set "abc=1" & set "123=1"
  3. Rem abc 及 123 是需要排除的目录
  4. call :GetTxtFile "e:"
  5. pause & exit /b
  6. :GetTxtFile
  7. for %%a in ("%~1\*.txt") do echo,%%a
  8. for /f "delims=" %%a in ('dir /ad/b "%~1\" 2^>nul') do (
  9.     if not defined %%~nxa (
  10.         call :GetTxtFile "%~1\%%a"
  11.     )
  12. )
复制代码

TOP

回复 3# fa1120ewja


    xcopy命令的 /l 选项只是显示将要被复制的文件列表,并不会真正的进行复制。根据它输出的文件列表,可以进行你需要的后续操作。

TOP

回复 2# apang


    谢谢,用xcopy /l参数实现了。

TOP

返回列表