我有一些进程在目录及其子目录中创建一些 0KB 大小的文件。
如何使用 Windows 命令提示符从文件系统中删除文件?
任何可以完成该任务的命令或脚本都可以工作。
递归遍历文件:
for /r %F in (*)
找出零长度文件:
if %~zF==0
删除它们:
del "%F"
把它们放在一起:
for /r %F in (*) do if %~zF==0 del "%F"
如果您在批处理文件中需要这个,那么您需要将
%
: 加倍
for /r %%F in (*) do if %%~zF==0 del "%%F"
注意: 我假设您的意思是长度恰好为 0 字节的文件。如果 0 KB 意味着小于 1000 字节的任何内容,则上面的
if
需要读取 if %~zF LSS 1000
或任何您的阈值。
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in ('dir/s/b/a-d') do (
if %%~Za equ 0 del "%%a"
)
发现于:链接文本似乎可以工作,但有一个警告:它不会删除名称包含空格的文件。可能有解决方法,但恐怕批处理不是我的强项。
纠正拼写错误后效果很好。问题是缺少波形符 (~) 例如,del "%%a" 需要是 del "%%~a"
这确实会删除名称中带有空格的文件,因为它将标记括在“双引号”中 - 另一种方法是使用“短名称”,如第二个示例 [ %%~sa
@回声关闭 setLocal EnableDelayedExpansion for /f "tokens=* delims= " %%a in ('dir/s/b/a-d') do ( if %%~Za 等于 0 del "%%~a" )
@回声关闭 setLocal EnableDelayedExpansion for /f "tokens=* delims= " %%a in ('dir/s/b/a-d') do ( if %%~Za 等于 0 del %%~sa )
如何撤消他们对答案一所做的删除?有很多我不想删除的文件被删除了,但我的 C: 中仍然有很多空文件。
您可以尝试从 UnxUtils 中查找.exe。
find . -type f -empty -delete