[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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盘下面的?
1

评分人数

    • tmplinshi: 感谢给帖子标题标注“[已解决]”字样PB + 2

  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
复制代码
以上这个代码
也可以实现删除所有盘下的,所有空文件夹。

TOP

求人不如求自己
你看看这个你也许会想到一些办法吧
  1. echo %SystemDrive%
复制代码

TOP

求人不如求自己
你看看这个你也许会想到一些办法吧echo %SystemDrive%
601997526 发表于 2011-6-12 10:20


这个可以显示C:

但不懂怎么样操作。

TOP

本帖最后由 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盘除外)下面的空目录?

TOP

  1. echo %SystemDrive%
复制代码
这个会显示你的系统盘符
你再加个if判断如果等于系统盘就不执行不就行了吗

TOP

  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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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
复制代码

TOP

本帖最后由 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的窗口。

只有多次点击取消后,才能关闭这个窗口。

TOP

本帖最后由 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. )
复制代码

TOP

本帖最后由 ygqiang 于 2011-6-12 18:38 编辑

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

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

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

这是什么原因呢?

TOP

11# ygqiang
七楼的代码你测试了不。。。
***共同提高***

TOP

11# ygqiang


把@echo off删掉,看看代码为何会跳过哪个文件夹。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

11# ygqiang
七楼的代码你测试了不。。。
batman 发表于 2011-6-12 19:50


都测试过。

TOP

11# ygqiang


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


看图片。

TOP

返回列表