使用批处理脚本检查filesize

时间:2014-10-02 12:45:53

标签: batch-file

我正在尝试使用批处理文件'run.bat'来检查文件的大小。批处理脚本是 -

setlocal
set file="C:\TestWorks\Project_Testing\new.template"
set maxbytesize=2000

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

if %size% LSS %maxbytesize% (
echo File is ^< %maxbytesize% bytes
) else (
echo File is ^>= %maxbytesize% bytes

当我运行它时,它没有给出正确的输出,我得到这样的输出 -

C:\TestWorks\Project_Testing>run.bat

C:\TestWorks\Project_Testing>set file="C:\TestWorks\Project_Testing\new.template

C:\TestWorks\Project_Testing>set maxbytesize=2000

C:\TestWorks\Project_Testing>FOR /F "usebackq" %A IN ('"C:\TestWorks\Project_Testing\bootstrap.bat.template"') DO set size=%~zA

C:\TestWorks\Project_Testing>set size=794
C:\TestWorks\Project_Testing>C:\TestWorks\Project_Testing>

这里出了什么问题。

2 个答案:

答案 0 :(得分:0)

虽然大多数代码都有效,但是有一些小问题会导致其他情况下出现更大的问题。

@echo off
    setlocal enableextensions

    set "file=C:\TestWorks\Project_Testing\new.template"
    if not exist "%file%" goto :eof

    set "maxbytesize=2000"

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

    if %size% LSS %maxbytesize% (
        echo File is ^< %maxbytesize% bytes
    ) else (
        echo File is ^>= %maxbytesize% bytes
    )

的变化:

  • 正确引用。虽然这不是失败的原因,但最好正确引用数据

  • for /f旨在处理数据行。要直接获取对文件的引用,应使用简单的for(不是,仍然不是失败的原因)。

  • 而且,代码出现故障的原因是else子句中缺少括号(请参阅here

答案 1 :(得分:0)

嘿,嘿,嘿......

您错过了if语句的右括号。

在最后)之后,通过它的寂寞在所有线上附加一个echo,也许批神会对你微笑。