gpt4 book ai didi

windows - 如果文件为空,如何使用 Windows 批处理文件检测(并删除)该文件?

转载 作者:可可西里 更新时间:2023-11-01 12:32:57 24 4
gpt4 key购买 nike

如何使用 Windows 批处理文件检测文件是否为空?如果它们是空的,我想删除错误日志。

我知道 for 循环解决方案,例如 https://web.archive.org/web/20171110203759/http://anderwald.info/scripting/windows-batch-delete-all-empty-files-in-a-specified-folder/但我想知道如果您知道需要测试的特定单个文件是否有更优雅的解决方案,因为我可能不希望删除文件夹中的其他零字节文件。

最佳答案

您引用的链接使用以下内容删除所有长度为 0 的文件

for /F "delims=" "%I" in ('dir /B') do if not exist "%I\" if %~zI EQU 0 del "%I"

这更复杂而且效率不高。简单使用就简单多了:

for %F in (*) do if %~zF equ 0 del "%F"

您想删除一个长度为零的特定文件。所以只需用您的文件名替换 * 通配符即可。

for %F in ("yourFileName") do if %~zF equ 0 del "%F"

如果你打算在批处理文件中使用它,那么你需要将所有百分比加倍(%%F%%~zF)

如果您不想使用 FOR 循环,您可以使用 CALL 参数代替 - 它使用与 FOR 变量相同的修饰符。但是,CALL 比 FOR 慢(在您的情况下可能并不重要)

@echo off
call :deleteIfEmpty "yourFileName"
exit /b

:deleteIfEmpty
if %~z1 eq 0 del %1
exit /b

编辑

我想到了另一种方法。 "^" 的 FINDSTR 搜索字符串将匹配文件的所有行。但是空文件没有任何行。因此,如果 FINDSTR 无法匹配一行,只需删除该文件即可。

>nul findstr "^" "yourFileName" || del "yourFileName"

关于windows - 如果文件为空,如何使用 Windows 批处理文件检测(并删除)该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com