Board logo

标题: [文件操作] 删除多级文件夹下的指定文件 [打印本页]

作者: kmustwxw    时间: 2014-11-29 13:11     标题: 删除多级文件夹下的指定文件

问题描述:在一个PDF.TXT的文本文档里百是要删除的文件名和扩展名,形如:集有(2013)第04393号.pdf
集有(2013)第04396号.pdf
集有(2013)第04404号.pdf ……格式(这个文本文档是用dir /b 命令提取出来的,每行一个完整的名字。),但是这些PDF文件存在于多级子目录里,要找到并删除这些PDF文件,如何写代码?谢谢,不知道我的描述是不是清楚?
作者: terse    时间: 2014-11-29 13:33

你的意思保留根目录的 删除子目录的?
作者: kmustwxw    时间: 2014-11-29 13:46

不是的,只要是PDF的名字和txt文本中的一样就删除,不管是根目录,还是子目录。另外,只有子目录才有pdf文件,根目录中没有,不知道我说的是不是清楚?
作者: kmustwxw    时间: 2014-11-29 17:12

回复 2# terse 不知道我说的是不是清楚,麻烦你帮我再看下,谢谢。
作者: apang    时间: 2014-11-29 17:46

先看看回显结果是否正确,如果没问题,删掉第4行的echo
  1. @echo off
  2. (for /f "delims=" %%a in (PDF.txt) do echo,\\%%a$)>$
  3. for /f "delims=" %%a in ('dir /a-d /b /s *.PDF^|findstr /ig:$') do (
  4.         echo del "%%a"
  5. )
  6. del $
  7. pause
复制代码

作者: kmustwxw    时间: 2014-11-29 18:01

回复 5# apang 你写的是正确的,回显结果正是我想要的,我刚学习bat不久,你的这种写法我从来没有看到过,学习了。我想请教一下:
  1. @echo off&setlocal enabledelayedexpansion
  2. For /F "Delims=" %%i In ('Dir /A:-D /S /B *.pdf') Do (
  3. set /p file=
  4. If exist !file!=="%%~nxi" Del "%%~i"
  5. )<PDF.txt
  6. pause
复制代码
按照这个思路能写的好吗?帮我修改一下。万分感谢。还有你的代码中:echo,\\%%a$)>$这段是怎么意思,麻烦稍微解释一下。
作者: apang    时间: 2014-11-29 19:43

本帖最后由 apang 于 2014-11-29 19:45 编辑

回复 6# kmustwxw


    按照你这个思路,除非 PDF.txt 中的每一行与 Dir /A:-D /S /B *.pdf 显示的每一行完全对应,否则无法实现

猜测你是想要用循环嵌套的办法:
  1. @echo off
  2. For /F "Delims=" %%i In ('Dir /A:-D /S /B *.pdf') Do (
  3.         for /f "delims=" %%j in (PDF.txt) do (
  4.                 if /i "%%~nxi" == "%%j" del "%%i"
  5.         )
  6. )
  7. pause
复制代码
echo,\\%%a$)>$ 是把PDF.txt每一行前面加路径字符(\\),后面加上表示结尾的字符($),然后生成一个临时文件$
作者: CrLf    时间: 2014-11-29 20:53

本帖最后由 CrLf 于 2014-11-29 21:53 编辑

危险动作请先测试:
  1. for /f "delims=" %%a in (PDF.txt) do del /s /f /a "%%a"
复制代码
靠,特么复制错了,赶紧改过来...
作者: apang    时间: 2014-11-30 01:11

回复 8# CrLf


    卧槽,del 的 /s 开关完全不记得了。输入 DEL /?,还真有,脑袋现处于半停工、全混乱状态,呵呵。
作者: CrLf    时间: 2014-11-30 01:17

回复 9# apang


    ←_←又喝醉啦嗯嗯?
作者: kmustwxw    时间: 2014-11-30 12:17

回复 8# CrLf 你是说哪里错了? apang的代码吗??
作者: CrLf    时间: 2014-11-30 12:56

回复 11# kmustwxw


    是说自己的代码,有一部分是复制 apang 的,结果忘记把 *.pdf 改成 "%%a",现在已经改好了




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