Board logo

标题: [文件操作] [讨论]批处理删除某文件夹之外的其它文件夹 [打印本页]

作者: youxi01    时间: 2007-12-1 21:00     标题: [讨论]批处理删除某文件夹之外的其它文件夹

删除某文件夹之外的其它文件,比如:\盘下,有很多文件夹,如Q、backup等,现在要求只保留QQ文件夹,如何实现?

PS:对于此问题,很多人都写了相关代码,但原理都几乎是:dir+echo+findstr
因为使用了findstr,效率方面打了折扣,欢迎大家积极讨论,给出更完美的解决方案
作者: lvsehuaxue    时间: 2011-2-18 07:51

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (d:\*) do (
  3.     set v=%%i
  4.     set v=!v:~-2!
  5.     if !v! neq qq rd /s /q %%i
  6. )
  7. pause
复制代码

作者: Batcher    时间: 2011-2-18 09:33     标题: 回复 2楼 的帖子

如果有个文件夹叫做q!q
你的代码是删不掉的
作者: ubcc    时间: 2011-2-19 00:25

我不会写,在其他地方看到的话一定告诉你
作者: CrLf    时间: 2011-2-19 01:44

减法不止一种:
  1. @echo off
  2. attrib /d -a&attrib /d +a .\QQ\
  3. for /f "delims=" %%a in ('dir /ad-a /b') do rd /s /q %%a
复制代码
  1. @echo off
  2. for /f "delims=" %%a in ('dir /ad /b^|findstr /v /x "QQ"') do rd /s /q %%a
复制代码
  1. @echo off
  2. move QQ\ ..\tmp\
  3. rd /s /q *
  4. move ..\tmp\ QQ\
复制代码
  1. @echo off
  2. ren QQ QQ..\
  3. rd /s /q *
  4. for %%a in (*\) do ren %%~sa QQ
复制代码
当然了,头两种比较常用,后两种只是写来玩玩,不过指不定什么时候就用上了

[ 本帖最后由 zm900612 于 2011-2-19 01:57 编辑 ]
作者: CrLf    时间: 2011-2-19 01:50

以上言论均属纸上谈兵,未经测试,如有错误,欢迎指正
感觉用cacls应该也可以,和5楼第4种差不多
作者: wc726842270    时间: 2011-2-19 02:48

  1. @echo off
  2. set "D:\qq=a"
  3. for /f "delims=" %%i in ('dir /b D:\') do if not defined %%~fi rd "%%~fi"
  4. pause
  5. del "%~f0"
复制代码
有点悲剧,P文件得放在同一目录下
  1. wmic fsdir where "drive='d:' and path='\\' and filename<>'qq'" call delete
复制代码

[ 本帖最后由 wc726842270 于 2011-2-19 03:09 编辑 ]
作者: wc726842270    时间: 2011-2-19 03:16

不过得先说一句了,代码不要乱试,别人的电脑另算,呵呵(最起码得改一下,再试试)
作者: CrLf    时间: 2011-2-19 13:17

顶7楼&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;




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