Kontroller filstørrelse i Windows-batch script

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil kontrollere filstørrelsen i et Windows-batch script. Det ser ud til, at mit script er spændende i stedet for at gå videre til næste trin i scriptet. Filtilstanden bør ikke generere en fejl og skulle fortsætte til næste trin. Men jeg må mangle noget eller have noget forkert i følgende:


:: Check size of input files 
call "\%DIR\_BAT\%CreateLAFMessage.bat" "\%~n0.bat-> \%STEP\_NBR\% - check for size of LOM\_AA\_2.dat and LOM\_AI.dat" \%\_LAF\_MSG\_DETAILS\%
set ERROR\_MSG="\%DIR\_IP\_INTERFACES\%LOM\_AA\_2.dat" ZERO Byte File
set file="\%DIR\_IP\_INTERFACES\%LOM\_AA\_2.dat"
set maxbytesize=0
FOR /F "usebackq" \%\%A IN (\%file\%) DO set size=\%\%~zA
if \%size\% NEQ \%maxbytesize\% (
    echo.File is ^<> \%maxbytesize\% bytes
) ELSE (
    goto ON\_ERROR
)
set ERROR\_MSG="\%DIR\_IP\_INTERFACES\%LOM\_AI.dat" ZERO Byte File
set file="\%DIR\_IP\_INTERFACES\%LOM\_AI.dat"
FOR /F "usebackq" \%\%A IN (\%file\%) DO set size=\%\%~zA
if \%size\% NEQ \%maxbytesize\% (
    echo.File is ^<> \%maxbytesize\% bytes
) ELSE (
    goto ON\_ERROR
)

Bedste reference


Du brugte dobbelt citater for at citere filnavnet, når usebackq er aktiveret. Usebackq muliggør en anden citationsteori, som sådan:



  • Brug dobbelt citater til lange filnavne i 'filenameset'.

  • Brug enkelt citater til 'Tekststreng til at behandle'

  • Brug tilbagekurser for `kommando til proces`



Derfor er du nødt til at ændre de dobbelte citater i enkelte citater ('). Her er et uddrag af din faste kode


@echo off
set "file=\%DIR\_IP\_INTERFACES\%LOM\_AA\_2.dat"
set MAXBYTESIZE=0

for /f "usebackq" \%\%A in ('\%file\%') do set size=\%\%~zA

if \%size\% GTR \%MAXBYTESIZE\% (
    echo(\%file\% too large
) else (
    echo(\%file\% is ^<^> \%size\% bytes long
)

pause


Bemærk også, at jeg har ændret nogle andre mindre dele af din kode.