标题: [文件操作] [讨论]批处理删除某文件夹之外的其它文件夹 [打印本页]
作者: youxi01 时间: 2007-12-1 21:00 标题: [讨论]批处理删除某文件夹之外的其它文件夹
删除某文件夹之外的其它文件,比如:\盘下,有很多文件夹,如Q、backup等,现在要求只保留QQ文件夹,如何实现?
PS:对于此问题,很多人都写了相关代码,但原理都几乎是:dir+echo+findstr
因为使用了findstr,效率方面打了折扣,欢迎大家积极讨论,给出更完美的解决方案
作者: lvsehuaxue 时间: 2011-2-18 07:51
- @echo off&setlocal enabledelayedexpansion
- for /d %%i in (d:\*) do (
- set v=%%i
- set v=!v:~-2!
- if !v! neq qq rd /s /q %%i
- )
- pause
复制代码
作者: Batcher 时间: 2011-2-18 09:33 标题: 回复 2楼 的帖子
如果有个文件夹叫做q!q
你的代码是删不掉的
作者: ubcc 时间: 2011-2-19 00:25
我不会写,在其他地方看到的话一定告诉你
作者: CrLf 时间: 2011-2-19 01:44
减法不止一种:- @echo off
- attrib /d -a&attrib /d +a .\QQ\
- for /f "delims=" %%a in ('dir /ad-a /b') do rd /s /q %%a
复制代码
- @echo off
- for /f "delims=" %%a in ('dir /ad /b^|findstr /v /x "QQ"') do rd /s /q %%a
复制代码
- @echo off
- move QQ\ ..\tmp\
- rd /s /q *
- move ..\tmp\ QQ\
复制代码
- @echo off
- ren QQ QQ..\
- rd /s /q *
- 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
- @echo off
- set "D:\qq=a"
- for /f "delims=" %%i in ('dir /b D:\') do if not defined %%~fi rd "%%~fi"
- pause
- del "%~f0"
复制代码
有点悲剧,P文件得放在同一目录下
- 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楼
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |