标题: [文件操作] [已解决]批处理如何不删除系统盘c盘下面的空文件夹? [打印本页]
作者: ygqiang 时间: 2011-6-12 09:03 标题: [已解决]批处理如何不删除系统盘c盘下面的空文件夹?
本帖最后由 ygqiang 于 2011-6-23 11:40 编辑
- rem 删除空文件夹
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do rd "%%j" 1>nul 2>nul
- )
- pause
-
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=2" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do rd "%%j" 1>nul 2>nul
- )
- pause
复制代码
这个代码,可以删除当前所有盘符下,所有的空文件夹。
如何修改,可以实现 不删除 系统盘c盘下面的?
作者: ygqiang 时间: 2011-6-12 09:15
- @echo off & setlocal enabledelayedexpansion
- for /f "skip=1 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set disk=%%i&set disk=!disk:~-2!
- for /f "delims=" %%a in ('dir/ad/b/s !disk!') do 2>nul rd %%~fsa\&&echo.成功删除空文件夹:%%a
- )
- pause
复制代码
以上这个代码
也可以实现删除所有盘下的,所有空文件夹。
作者: 601997526 时间: 2011-6-12 10:20
求人不如求自己
你看看这个你也许会想到一些办法吧复制代码
作者: ygqiang 时间: 2011-6-12 10:46
求人不如求自己
你看看这个你也许会想到一些办法吧echo %SystemDrive%
601997526 发表于 2011-6-12 10:20
这个可以显示C:
但不懂怎么样操作。
作者: ygqiang 时间: 2011-6-12 10:48
本帖最后由 ygqiang 于 2011-6-12 10:56 编辑
- @echo off & setlocal enabledelayedexpansion
-
- echo 你的所有盘符如下:
-
- for /f "skip=1 delims=\" %%i in ('fsutil fsinfo
- drives^|find /v ""') do (
- set disk=%%i&set disk=!disk:~-2!
- echo.!disk!
-
- )
- pause
复制代码
这个代码,可以判断出所有的盘符。- for /f "tokens=*" %%j in ('dir /s/ad/b d:') do rd "%%j" 1>nul 2>nul
复制代码
而这个代码,可以删除d盘下所有的 空目录。
如何结合这2个代码,实现:删除所有盘(系统盘c盘除外)下面的空目录?
作者: 601997526 时间: 2011-6-12 11:03
复制代码
这个会显示你的系统盘符
你再加个if判断如果等于系统盘就不执行不就行了吗
作者: Batcher 时间: 2011-6-12 14:36
- @echo off
- setlocal enabledelayedexpansion
- for /f "skip=1 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set disk=%%i
- set disk=!disk:~-2!
- echo,!disk!
- if "!disk!" -neq "C:" (
- for /f "tokens=*" %%j in ('dir /s /ad /b !disk!') do (
- if exist "%%j\" (
- rd "%%j" 1>nul 2>nul
- )
- )
- )
- )
复制代码
作者: Hello123World 时间: 2011-6-12 16:09
- rem 删除空文件夹
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" 1>nul 2>nul
- )
- pause
复制代码
作者: ygqiang 时间: 2011-6-12 18:20
本帖最后由 ygqiang 于 2011-6-12 18:59 编辑
目前为止,只找到1个方法:
以下的代码,不行。- rem 删除所有盘(系统盘c盘除外)下面的空目录
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" >nul 2>nul
- )
-
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=2" get caption') do (
- for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" >nul 2>nul
- )
复制代码
更新下:这个方法不行,还是会删除c盘下面的一些空目录,这样开机的时候,xp系统会提示需要安装office的窗口。
只有多次点击取消后,才能关闭这个窗口。
作者: ygqiang 时间: 2011-6-12 18:22
本帖最后由 ygqiang 于 2011-6-12 18:36 编辑
目前为止,只找到1个方法:- rem 删除所有盘(系统盘c盘除外)下面的空目录
- @echo off & setlocal enabledelayedexpansion
- for /f "skip=1 delims=\" %%i in ('fsutil fsinfo
- drives^|find /v ""') do (
- set disk=%%i&set disk=!disk:~-2!
- if NOT !disk!==%systemdrive% (
- for /f "tokens=*" %%j in ('dir /s/ad/b !disk!') do rd "%%j" >nul 2>nul
- )
- )
复制代码
作者: ygqiang 时间: 2011-6-12 18:23
本帖最后由 ygqiang 于 2011-6-12 18:38 编辑
但上面这个方法,有个缺陷:
如果我在d盘根目录下面,分别建立一个00 11 的空文件夹
将bat代码放在00文件夹下面,运行后,就不会删除d:\11这个空文件夹?
这是什么原因呢?
作者: batman 时间: 2011-6-12 19:50
11# ygqiang
七楼的代码你测试了不。。。
作者: Batcher 时间: 2011-6-13 01:12
11# ygqiang
把@echo off删掉,看看代码为何会跳过哪个文件夹。
作者: ygqiang 时间: 2011-6-13 05:50
11# ygqiang
七楼的代码你测试了不。。。
batman 发表于 2011-6-12 19:50
都测试过。
作者: ygqiang 时间: 2011-6-13 13:15
11# ygqiang
把@echo off删掉,看看代码为何会跳过哪个文件夹。
Batcher 发表于 2011-6-13 01:12
看图片。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |