微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Windows cmdrecursion删除0KB文件

我有一些进程,在目录及其子目录中创build一些0KB大小的文件

如何使用Windows命令提示符从文件系统中删除文件

任何单一的命令或脚本将执行任务将工作。

我只能运行简单的cmd命令和脚本,在具有受限访问权限的远程计算机上工作。

ifstream其他程序正在写入的文件

C ++编程:导航到用户文件以保存每个用户的应用程序数据

编程创build的文件在Linux中成为NULL

文件读取Robocopy(或xcopy)?

并行读取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”需要被删除“%%〜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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐