Board logo

标题: [文件操作] [已解决]批处理如何删除某目录下除了指下的两个文件外的全部文件? [打印本页]

作者: wolfan    时间: 2011-7-23 16:58     标题: [已解决]批处理如何删除某目录下除了指下的两个文件外的全部文件?

本帖最后由 wolfan 于 2011-7-26 17:12 编辑

-xxx
+a.txt
-filebox
++abc.exe

+b.txt
+e.exe
+d.ttf
+j.jpg
+g.gif

+号为文件,-号为目录
除了 a.txt 与 filebox及里面的abc.exe 不删除外其它多删除掉。
只用一条命令~
作者: CrLf    时间: 2011-7-23 19:34

本帖最后由 CrLf 于 2011-7-24 21:53 编辑
  1. del /s /a /q /f *.* 3>>a.txt 5>>filebox\abc.exe
复制代码

作者: CUer    时间: 2011-7-23 20:16

回复 2# CrLf


好方法,向版主学习。
作者: tmplinshi    时间: 2011-7-23 21:47

回复 2# CrLf


好方法,向版主学习。
作者: mxxcgzxxx    时间: 2011-7-24 10:05

回复 2# CrLf


    一开始我也没看懂,以为DEL句柄有什么特别这处,原来是拒绝访问,很强大也
作者: wolfan    时间: 2011-7-24 16:58

CrLf 发表于 2011-7-23 19:34



    如果我File目录下有N个文件,那不是要写好多次~
还有,目录下有N个文件夹的情况DEL不是就没用了吗~
作者: CrLf    时间: 2011-7-24 22:14

回复 6# wolfan


    多个文件可以启动外部命令占用嘛,理论上可以占用无数个文件,不过效率很低,而且不符合只用一条命令的要求(当然如果有人非要把 cmd /c 后跟一串命令参数说成是一条命令,我也没话说...)。要想用一条命令就只能用 wmic datafile 了,这我也不熟,还是等别人回答或者自行百度吧,记得找到了贴上来分享下~
  不过 wmic 的代码将十分冗长,而且有可能不够通用,这时候文件不是特别多的话建议用 for /f ... in ('dir /a /s /b^|findstr /vxlg:list.txt') do ...
   xcopy /l /exculde 虽然也可以按照列表筛选文件,但是它是通配匹配,而且不会单独显示符合条件的文件夹路径
  至于通过 attrib 进行文件、文件夹筛选,虽然可以,但是效率实在太低了。

  至于文件夹,我只是按楼主当初的要求给出最合适的解决方案,你怎么可能指望一个方案既简洁高效,又无所不能呢...




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