标题: [文件操作] 批处理如何列出所有空目录并删除? [打印本页]
作者: shenjiliangtang 时间: 2023-12-5 17:58 标题: 批处理如何列出所有空目录并删除?
其实功能需求很简单,就是删空目录,论坛里也找到现成的代码并且测试没问题:- for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r') do rd /q "%%a" 2>nul
复制代码
但同时我希望列出所有删除的空目录以便检查确认,于是我试了好多办法,比如把rd命令的错误信息输出到exist文件,通过判断这个文件的内容来输出路径,结果就是它只会输出第一个空路径,后面的就不显示了(但不影响删除)。。。- @echo off
- setlocal enabledelayedexpansion
- echo 删除空目录:
- for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r') do (
- rd /q "%%a" 2>exist
- set /p value=</.exist
- set value=!value:~0,6!
- if NOT "!value!"=="目录不是空的" echo %%a
- )
- echo 空目录删除完成!
- echo.
- echo.
- pause
复制代码
大神帮我改改啊,问题到底出在哪?
作者: Five66 时间: 2023-12-5 19:24
重定向放到最外层,不过不知道bat能否边写入边读取,建议步骤分开来,先记录,全部完事后再读取
或者试试
(for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r') do rd /q "%%a" 2>nul && echo,%%a)>111.txt
作者: hfxiang 时间: 2023-12-5 19:49
回复 1# shenjiliangtang
试试- @echo off
- @rem 保存为ANSI格式
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir/b/s/ad^|sort/r') do (
- set "Empty_Folder="
- for /f "delims=" %%b in ('dir/a/b "%%~a"') do set "Empty_Folder=%%~b"
- if "!Empty_Folder!." equ "." rd/q/s "%%~a">nul 2>&1
- )
- endlocal
- popd
复制代码
作者: ShowCode 时间: 2023-12-5 21:59
回复 1# shenjiliangtang
V1.bat- @echo off
- setlocal enabledelayedexpansion
- set "OutFile=EmptyFolderList.txt"
- type nul > "%OutFile%"
- echo 删除空目录:
- for /f "delims=" %%a in ('dir /b /ad /s ^ |sort /r') do (
- rd /q "%%a" 2>nul && >>"%OutFile%" echo,%%a
- )
- echo 空目录删除完成!
- pause
复制代码
作者: ShowCode 时间: 2023-12-5 21:59
回复 1# shenjiliangtang
V2.bat- @echo off
- setlocal enabledelayedexpansion
- set "OutFile=EmptyFolderList.txt"
- type nul > "%OutFile%"
- echo 删除空目录:
- for /f "delims=" %%a in ('dir /b /ad /s ^ |sort /r') do (
- rd /q "%%a" 2>nul
- if not errorlevel 1 (
- >> "%OutFile%" echo,%%a
- )
- )
- echo 空目录删除完成!
- pause
复制代码
作者: qixiaobin0715 时间: 2023-12-6 09:56
本帖最后由 qixiaobin0715 于 2023-12-7 10:02 编辑
可选择性的使用rd命令,也就是说只有目录为空时才使用rd命令:- @echo off
- (echo,Empty Directory:
- for /f "delims=" %%i in ('dir /s /b /ad^|sort /r') do (
- set n=0
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b') do set n=
- popd
- if defined n (
- echo,%%i
- rd "%%i"
- )
- ))>ED.txt
- pause
复制代码
作者: qixiaobin0715 时间: 2023-12-6 11:18
这样简单判断一下也行:- @echo off
- (for /f "delims=" %%i in ('dir /s /b /ad^|sort /r') do (
- rd "%%i" 2>nul
- if not exist "%%i" echo,%%i
- ))>EDList.txt
- pause
复制代码
作者: shenjiliangtang 时间: 2023-12-6 11:32
回复 7# qixiaobin0715
对哦,这个思路就很简单清晰,感谢~
作者: hlzj88 时间: 2023-12-6 19:45
假设文件夹只内含有系统特定的隐藏的ini,Thumbs.db文件,是怎么来确定 是空 还是 不空,
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |