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

[文件操作] BAT脚本FOR遍历,删除文件,怎样排除目录和文件?

排除C盘下指定目录下所有的PDF DOC XLS文件,进行遍历C盘、D盘、E盘所有PDF、DOC、XLS文件,进行删除处理

本帖最后由 77七 于 2023-8-29 17:00 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式。
  3. for /r "C:\指定目录" %%i in (*.pdf *.doc *.xls) do set _"%%i"=1
  4. for %%a in (c d e) do call :1 "%%a:\"
  5. pause
  6. exit
  7.         :1
  8.         for /r "%~1" %%b in (*.pdf *.doc *.xls) do (
  9.                 if not defined _"%%b" (
  10.                         rem 效果满意,则删除echo再执行
  11.                         echo del "%%b"
  12.                 )
  13.         )
  14.         exit /b
复制代码

代码有问题,参考5楼。
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 1# 7758234
这种操作还是要小心,一旦删错文件,后悔晚矣!!!

TOP

回复 1# 7758234


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. REM 设置待排除的目录(注意以\结尾)
  3. set "ExFolder=C:\Users\Administrator\Desktop\"
  4. for %%a in (C D E) do (
  5.     if exist %%a:\ (
  6.         echo 正在搜索%%a:\
  7.         pushd %%a:\
  8.         for /f "delims=" %%b in ('dir /b /s /a-d *.pdf *.doc *.xls 2^>nul ^| find /v /i "%ExFolder%"') do (
  9.             REM 如果显示的结果没有问题,把下面的echo去掉再次执行即可删除文件
  10.             echo del /f /q "%%b"
  11.         )
  12.         popd
  13.     )
  14. )
  15. pause
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# 77七


    如果待排除的文件较多,可能超出变量上限。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


   谢谢站长指点!没考虑到指定目录下会存在大量待排除文件。
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-8-29 17:08 编辑

重来一个。
  1. @echo off
  2. rem 批处理保存为ansi编码格式。请谨慎使用!
  3. set "folder=C:\指定目录"
  4. for %%a in (pdf doc xls) do attrib +H "%folder%\*.%%a" /s
  5. echo 确认待排除文件隐藏成功,则继续执行
  6. pause
  7. for %%a in (c d e) do (
  8.         pushd "%%a:\"
  9.         del /s /q *.pdf;*.doc;*.xls
  10.         popd
  11. )
  12. for %%a in (pdf doc xls) do attrib -H "%folder%\*.%%a" /s
  13. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 7# 77七


    谢谢,这个我看明白了,排除文件添加隐藏属性,好办法,今天又学习了

TOP

本帖最后由 buyiyang 于 2023-8-30 11:04 编辑

试试wmic,遍历所有盘
  1. @echo off
  2. rem 指定排除目录
  3. set "exfolder=C:\Windows\"
  4. set "exfolder=%exfolder:\=\\%"
  5. wmic datafile where "not name like '%exfolder%%%' and (Extension='pdf' or Extension='doc' or Extension='xls')" get name /value | findstr .
  6. pause
  7. pause>nul&echo,确认删除?
  8. pause>nul&echo,确认删除?
  9. wmic datafile where "not name like '%exfolder%%%' and (Extension='pdf' or Extension='doc' or Extension='xls')" call delete
复制代码
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

回复 4# Batcher


    站长,您好,请问多个目录要如何配置添加?

TOP

回复 9# buyiyang


    我测试,执行,提示
节点 - CSG21659Q5
错误:
描述 = 无效查询
请按任意键继续. . .

TOP

回复 7# 77七


    你好,如果多个目录要如何设置添加

TOP

回复 12# 7758234

  1. @echo off
  2. rem 批处理保存为ansi编码格式。请谨慎使用!
  3. set "folder1=C:\指定目录1"
  4. set "folder2=C:\指定目录2"
  5. for %%a in (pdf doc xls) do (
  6. attrib +H "%folder1%\*.%%a" /s
  7. attrib +H "%folder2%\*.%%a" /s
  8. )
  9. echo 确认待排除文件隐藏成功,则继续执行
  10. pause
  11. for %%a in (c d e) do (
  12.         pushd "%%a:\"
  13.         del /s /q *.pdf;*.doc;*.xls
  14.         popd
  15. )
  16. for %%a in (pdf doc xls) do (
  17. attrib -H "%folder1%\*.%%a" /s
  18. attrib -H "%folder2%\*.%%a" /s
  19. )
  20. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 10# 7758234


方法1.bat
  1. @echo off
  2. REM 设置待排除的目录(注意以\结尾)
  3. set "ExFolder1=C:\Users\Administrator\Desktop\"
  4. set "ExFolder2=C:\Program Files\"
  5. for %%a in (C D E) do (
  6.     if exist %%a:\ (
  7.         echo 正在搜索%%a:\
  8.         pushd %%a:\
  9.         for /f "delims=" %%b in ('dir /b /s /a-d *.pdf *.doc *.xls 2^>nul ^| find /v /i "%ExFolder1%" ^| find /v /i "%ExFolder2%" ') do (
  10.             REM 如果显示的结果没有问题,把下面的echo去掉再次执行即可删除文件
  11.             echo del /f /q "%%b"
  12.         )
  13.         popd
  14.     )
  15. )
  16. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Batcher


    谢谢

TOP

返回列表