Board logo

标题: [文件操作] 批处理如何删除不存在指定扩展名/后缀名的文件的子文件里的所有文件 [打印本页]

作者: microming    时间: 2009-11-26 16:17     标题: 批处理如何删除不存在指定扩展名/后缀名的文件的子文件里的所有文件

本帖最后由 pcl_test 于 2016-8-9 09:26 编辑

批处理查找当前目录下的所有的文件 如果查找子文件夹里没有后缀名abc的文件则删除改子文件夹下所有文件
作者: vsbat    时间: 2009-11-26 16:57

  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /b /ad') do (
  3. if not exist %%i\*.txt  del /f /q "%%i"\*)
  4. echo 处理成功
  5. pause
复制代码


这里的txt 就是你的 abc
作者: batman    时间: 2009-11-26 17:08

楼上的代码应该会有问题:
应该是if not exist "%%i\*.txt" del /f /q "%%i\*"
作者: vsbat    时间: 2009-11-26 17:29     标题: 回楼上

是路径空格的问题吗
可是我测试是成功的
if 的没引号==行
del 的不加引号不行
作者: microming    时间: 2009-11-26 17:33     标题: 回复 2楼 的帖子

要是改成 查找当前目录下的所有的文件 如果查找子文件夹里没有后缀名abc和后缀名def的文件则删除改子文件夹下所有文件   怎么改?
作者: microming    时间: 2009-11-26 17:34     标题: 回复 4楼 的帖子

vsbat 兄的代码是可以运行的  非常感谢!
作者: vsbat    时间: 2009-11-26 17:43

@echo off
for /f "delims=" %%i in ('dir /s /b /ad') do (
if not exist %%i\*.txt (if not exist %%i\*.bmp  del /f /q "%%i"\*))
echo 处理成功
pause

这个适用于 文件夹即没有bmp 又没有 txt 那么我就清空它
作者: vsbat    时间: 2009-11-26 17:46

@echo off
for /f "delims=" %%i in ('dir /s /b /ad') do (
if not exist %%i\*.txt     del /f /q "%%i"\*
if not exist %%i\*.bmp  del /f /q "%%i"\*)
echo 处理成功
pause

这个适用于 文件夹 没有 bmp 或 txt 那么就清空它
作者: bhsx    时间: 2009-11-26 17:54

DIR *.ABC&&DEL /Q /F *
作者: vsbat    时间: 2009-11-26 18:12     标题: 回复 9楼 的帖子

请问楼上的
你测试了没有
作者: hdxhao    时间: 2009-11-26 18:58

太好了,我先学习了.
作者: microming    时间: 2009-11-27 00:40     标题: 回复 7楼 的帖子

非常感谢!!!
这样写行不行?
@echo off
for /f "delims=" %%i in ('dir /s /b /ad') do (
if not exist %%i\*.txt  if not exist %%i\*.bmp  del /f /q "%%i"\* )
echo 处理成功
pause
去掉括号  我运行了一下 也是可以的 不知道有没有语法错误
作者: vsbat    时间: 2009-11-27 19:31     标题: 回复 12楼 的帖子

实践是检验真理的唯一标准
既然运行成功
说明 这样可以




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2