找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31632|回复: 14

[文件操作] [已解决]批处理如何不删除系统盘c盘下面的空文件夹?

[复制链接]
发表于 2011-6-12 09:03:22 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2011-6-23 11:40 编辑

  1. rem 删除空文件夹
  2. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
  3.    for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do rd "%%j" 1>nul 2>nul
  4. )
  5. pause

  6. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=2" get caption') do (
  7.    for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do rd "%%j" 1>nul 2>nul
  8. )
  9. pause

复制代码
这个代码,可以删除当前所有盘符下,所有的空文件夹。

如何修改,可以实现 不删除 系统盘c盘下面的?

评分

参与人数 1PB +2 收起 理由
tmplinshi + 2 感谢给帖子标题标注“[已解决]”字样

查看全部评分

 楼主| 发表于 2011-6-12 09:15:47 | 显示全部楼层

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "skip=1 delims=" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  3.     set disk=%%i&set disk=!disk:~-2!
  4.     for /f "delims=" %%a in ('dir/ad/b/s !disk!') do 2>nul rd %%~fsa\&&echo.成功删除空文件夹:%%a
  5. )
  6. pause

复制代码
以上这个代码
也可以实现删除所有盘下的,所有空文件夹。
发表于 2011-6-12 10:20:25 | 显示全部楼层
求人不如求自己
你看看这个你也许会想到一些办法吧
  1. echo %SystemDrive%
复制代码
 楼主| 发表于 2011-6-12 10:46:44 | 显示全部楼层
求人不如求自己
你看看这个你也许会想到一些办法吧echo %SystemDrive%
601997526 发表于 2011-6-12 10:20


这个可以显示C:

但不懂怎么样操作。
 楼主| 发表于 2011-6-12 10:48:33 | 显示全部楼层
本帖最后由 ygqiang 于 2011-6-12 10:56 编辑


  1. @echo off & setlocal enabledelayedexpansion

  2. echo 你的所有盘符如下:

  3. for /f "skip=1 delims=" %%i in ('fsutil fsinfo
  4. drives^|find /v ""') do (
  5. set disk=%%i&set disk=!disk:~-2!
  6. echo.!disk!

  7. )
  8. pause

复制代码
这个代码,可以判断出所有的盘符。

  1. for /f "tokens=*" %%j in ('dir /s/ad/b d:') do rd "%%j" 1>nul 2>nul
复制代码
而这个代码,可以删除d盘下所有的 空目录。



如何结合这2个代码,实现:删除所有盘(系统盘c盘除外)下面的空目录?
发表于 2011-6-12 11:03:30 | 显示全部楼层
  1. echo %SystemDrive%
复制代码
这个会显示你的系统盘符
你再加个if判断如果等于系统盘就不执行不就行了吗
发表于 2011-6-12 14:36:21 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 delims=" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  4.     set disk=%%i
  5.     set disk=!disk:~-2!
  6.     echo,!disk!
  7.     if "!disk!" -neq "C:" (
  8.         for /f "tokens=*" %%j in ('dir /s /ad /b !disk!') do (
  9.             if exist "%%j" (
  10.                 rd "%%j" 1>nul 2>nul
  11.             )
  12.         )
  13.     )
  14. )
复制代码
发表于 2011-6-12 16:09:26 | 显示全部楼层
  1. rem 删除空文件夹
  2. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
  3.    for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" 1>nul 2>nul
  4. )
  5. pause
复制代码
 楼主| 发表于 2011-6-12 18:20:06 | 显示全部楼层
本帖最后由 ygqiang 于 2011-6-12 18:59 编辑

目前为止,只找到1个方法:

以下的代码,不行。


  1. rem 删除所有盘(系统盘c盘除外)下面的空目录
  2. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get caption') do (
  3.    for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" >nul 2>nul
  4. )

  5. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=2" get caption') do (
  6.    for /f "tokens=*" %%j in ('dir /s/ad/b %%i') do if not %%i equ c: rd "%%j" >nul 2>nul
  7. )

复制代码
更新下:这个方法不行,还是会删除c盘下面的一些空目录,这样开机的时候,xp系统会提示需要安装office的窗口。

只有多次点击取消后,才能关闭这个窗口。
 楼主| 发表于 2011-6-12 18:22:59 | 显示全部楼层
本帖最后由 ygqiang 于 2011-6-12 18:36 编辑

目前为止,只找到1个方法:


  1. rem 删除所有盘(系统盘c盘除外)下面的空目录
  2. @echo off & setlocal enabledelayedexpansion
  3. for /f "skip=1 delims=" %%i in ('fsutil fsinfo
  4. drives^|find /v ""') do (
  5. set disk=%%i&set disk=!disk:~-2!
  6. if NOT !disk!==%systemdrive% (
  7. for /f "tokens=*" %%j in ('dir /s/ad/b !disk!') do rd "%%j" >nul 2>nul
  8. )
  9. )

复制代码
 楼主| 发表于 2011-6-12 18:23:06 | 显示全部楼层
本帖最后由 ygqiang 于 2011-6-12 18:38 编辑

但上面这个方法,有个缺陷:

如果我在d盘根目录下面,分别建立一个00   11 的空文件夹

将bat代码放在00文件夹下面,运行后,就不会删除d:\11这个空文件夹?

这是什么原因呢?
发表于 2011-6-12 19:50:32 | 显示全部楼层
11# ygqiang
七楼的代码你测试了不。。。
发表于 2011-6-13 01:12:48 | 显示全部楼层
11# ygqiang


把@echo off删掉,看看代码为何会跳过哪个文件夹。
 楼主| 发表于 2011-6-13 05:50:24 | 显示全部楼层
11# ygqiang
七楼的代码你测试了不。。。
batman 发表于 2011-6-12 19:50


都测试过。
 楼主| 发表于 2011-6-13 13:15:17 | 显示全部楼层
11# ygqiang


把@echo off删掉,看看代码为何会跳过哪个文件夹。
Batcher 发表于 2011-6-13 01:12


看图片。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:49 , Processed in 0.021284 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表