在批处理脚本中检查文件大小

Posted

技术标签:

【中文标题】在批处理脚本中检查文件大小【英文标题】:Checking file size in a batch script 【发布时间】:2011-10-24 19:41:26 【问题描述】:

我正在尝试查找文件的大小,如果它大于 0,我想做一些事情。 我有这个代码:

set file="C:\AnalyzerCheck\loaded.txt"
set minbytesize=0
if exist %file% (
FOR /F "usebackq" %A IN ('%file%') DO set size=%~zA
if %size% GTR %minbytesize% (
    //do stuff
) else (
    //do stuff
)

但是,我在运行脚本时收到此输出/错误:

C:\AnalyzerCheck>设置文件=C:\AnalyzerCheck\loaded.txt

C:\AnalyzerCheck>设置 minbytesize=0

file~zA 出乎意料 时间。

C:\AnalyzerCheck>FOR /F "usebackq" 文件~zA

C:\AnalyzerCheck>

如何解决这个错误?

编辑:

新错误:

【问题讨论】:

【参考方案1】:

这个命令:

FOR /F "usebackq" %A IN ('%file%') DO set size=%~zA

有两个错误:您不能使用 /F 选项(也不能使用“useback”选项),因为您不想读取文件 CONTENTS,而只是处理文件 NAME。此外,如果此命令位于批处理文件中,则 A 可替换参数必须有两个百分号:

FOR %%A IN (%file%) DO set size=%%~zA

【讨论】:

我建议使用 ("%file%") 而不是 (%file%) 以防文件名有空格。你的 FOR 命令对我来说失败了,因为我的文件名有空格。添加引号让它使用带有空格的文件名。【参考方案2】:

在脚本中,

这个命令:

    for /f %%A in ("myfile.txt") do set size=%%~zA

或者这个命令:

    set "filename=myfile.txt"
    for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes

或者这个命令:

    set "filename=myfile.txt"
    for /f %%A in (%filename%) do set size=%%~zA

【讨论】:

【参考方案3】:
@echo off
cd C:\MyFolder\
set file="MyFile.txt"

set maxbytesize=0

FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

if %size% GTR %maxbytesize% (
    //do stuff
) ELSE (
    //do stuff
)

【讨论】:

以上是关于在批处理脚本中检查文件大小的主要内容,如果未能解决你的问题,请参考以下文章

如何检查文件大小是不是超过批处理的最大文件大小[重复]

使用批处理脚本检测文件损坏

检查目录中的文件是不是仍在使用 Windows 批处理脚本写入

如何在批处理脚本中查找 m3u 播放列表文件大小?

使用批处理文件检查特定文件大小

性能测试必知必会:Shell脚本设计实践指南