如果文件存在且小于size



我有以下代码。我想做的是看看文件是否存在,如果它大于一定的大小,然后再继续:

:: Create file dir variables
set logfile=nightly_maint.log
set logbackup=c:sbbslogBackups
set announcefile=announce.txt
set minbytesize=100
:: Create date time string
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET dirname=%mm%-%dd%-%yyyy%
cd c:sbbs
move %logfile% %logbackup%%logfile%.%dirname%.bak
echo Nightly Maintenance running for Split Inifnity BBS on %dirname%. >> %logfile% 
echo Checking for daily received files list. >> %logfile% 
:: Create files received announcement
cd c:tinytic
if exist %announcefile% (
    for /F "usebackq" %%A in ('%announcefile%') do set size=%%~zA
      if %size% gtr %minbytesize% (
        echo New files received list found, proceeding with announcement generation. >> %logfile% 
        :: Add a text header and footer to my announcement
        echo Creating message file for posting. >> %logfile% 
        copy header.txt+announce.txt+footer.txt final.txt
        echo Creating new files announcement for FidoNet Allfix echo. >> %logfile%
        c:sbbsexecsmbutil ic:tinyticfinal.txt c:sbbsdatasubsfidoallfixfi.shd < c:tinyticfidoreq.hdr
        echo Creating new files announcement for Fidonet File Announce. >> %logfile%
        c:sbbsexecsmbutil ic:tinyticfinal.txt c:sbbsdatasubsfidofdnannou.shd < c:tinyticfidoreq.hdr
        echo Creating new files announcement for Fidonet File Announce. >> %logfile%
        c:sbbsexecsmbutil ic:tinyticfinal.txt c:sbbsdatasubsfido-req.shd < c:tinyticfidoreq.hdr
        echo Completed posting new files messages. >> %logfile%
        echo Running ADDFILES for extended descriptions in file base. >> %logfile%
        del announce.txt
        del final.txt
        cd c:sbbs
        c:sbbsexecADDFILES * /S /N /Z
        echo Completed ALLFILES scan. >> %logfile%
        echo Creating FREQ files list. >> %logfile%
        c:sbbsexecFILELIST *  /ALL /ULD /EXT c:taurusfiles.txt
      ) else (
        echo Announce.txt was zero bytes in size, bypassing new files received posting. >> %logfile%
      )
) else (
    echo Announce.txt file not found, bypassing new files received posting. >> %logfile% 
)

当运行批处理文件时,在目录中有一个零字节的文件,我得到这个:

c:sbbs>move nightly_maint.log c:sbbslogBackupsnightly_maint.log.11-16-2016.bak
        1 file(s) moved.
c:sbbs>echo Nightly Maintenance running for Split Inifnity BBS on 11-16-2016.   1>>nightly_maint.log
c:sbbs>echo Checking for daily received files list.   1>>nightly_maint.log
c:sbbs>cd c:tinytic
100 was unexpected at this time.
c:tinytic>       if  gtr 100 (
c:sbbs>

当您在同一代码块中更改和读取相同变量时,解决方案是延迟展开:if %size% gtr %minbytesize% --> if !size!gtr %minbytesize%,并在脚本顶部设置本地enabledelayeexpand .

最新更新