您好:)我正在编写批处理文件以定期自动执行FTP传输。文件的名称和格式不会更改。但是,该文件中的数据每隔约10分钟由主机更新一次。我需要获取每个版本并将它们存储在同一目录(具有不同的名称)
代码的目的是:
到目前为止,我的批处理文件与此相当接近。我面临的问题是这个。大约一半时间保存具有相同“日期修改”值的两个文件。我相信错误发生在代码中,发现第二个最新和最新的文件没有产生预期的结果,这意味着文件没有标记为删除,因为它们应该是。我怀疑它与批处理文件执行的性质有关,我还不完全理解。
以下是我生成运行该文件一小时的结果示例: sample output。请注意,具有相同日期的几个文件包含两次,而其他文件仅包含一次。
感谢阅读和(如果你这样做)回答:)
最后这是我正在使用的代码。
@echo off
cls
:start
rem Find the currently newest file
for /F "delims=|" %%I IN ('dir "*.xml" /B /O:D') DO set SecondNewestFile=%%I
winscp.com /ini=nul /script=ten_minute_sync.txt
rem Find the "new" newest file
for /F "delims=|" %%J IN ('dir "*.xml" /B /O:D') DO set NewestFile=%%J
echo SecondNewestFile = %SecondNewestFile%
echo NewestFile = %NewestFile%
rem Count the number of files in the directory to determine if we need to check the date of the file
for /f %%A in ('dir "*.xml" /a-d-s-h /b ^| find /v /c ""') do set cnt=%%A
echo File count = %cnt%
if %cnt% gtr 1 (
rem Check the dates of the files and if there is a duplicate, remove it.
echo Checking dates of files
for %%a IN (%SecondNewestFile%) do set DATE1=%%~ta
for %%b IN (%NewestFile%) do set DATE2=%%~tb
echo Date of the NewestFile is %DATE1%
echo Date of the SecondNewestFile is %DATE2%
if "%DATE1%"=="%DATE2%" (
echo Deleting duplicate file
del /F %NewestFile%
)
)
rem Wait 5 minutes before executing the script again
echo "Waiting 5 minutes before checking again..."
timeout 300
goto start