我有以下代码。我想做的是看看文件是否存在,如果它大于一定的大小,然后再继续:
:: 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 .