我有一些进程,在目录及其子目录中创build一些0KB大小的文件。
如何使用Windows命令提示符从文件系统中删除文件?
任何单一的命令或脚本将执行任务将工作。
我只能运行简单的cmd命令和脚本,在具有受限访问权限的远程计算机上工作。
迭代递归遍历文件:
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”需要被删除“%%〜a”
这确实会删除名称中带有空格的文件,因为它将标记放在“双引号”中 – 另一种方法是使用“短名称”,如第二个示例中所示[%%〜sa
@echo off setLocal EnableDelayedExpansion for / f“tokens = * delims =”%% a in('dir / s / b / a-d')do(if %%〜Za equ 0 del“%%〜a”)
@echo off setLocal EnableDelayedExpansion for / f“tokens = * delims =”%% a in('dir / s / b / a-d')do(if %%〜Za equ 0 del %%〜sa)
您可以尝试UnxUtils中的 find.exe。
find . -type f -empty -delete