
求助批處理從文件夾中比對新增的xml文件時間戳然后拷貝文件求幫忙優化腳本最后由 licunwei 于 -5-27 18:03以下腳本是通過比對D:SCETCdataXml路徑下最新的*602和*603文件時間戳,如果2個文件的修改時間在1秒內,不執行任何動作。如果大于1秒就拷貝*603文件。我用了goto循環,雖然可以比對,但還是經常把2個文件 修改時間在1秒內的*603拷貝走了,我打算后面超過1秒的就拷貝后刪除源文件,但現在測試都經常出錯,更不敢添加刪除命令了。求大神幫忙優化優化。下面是當前腳本,求優化。
- @echo off
- if %1==hide goto :ExecBat
- start mshta vbscript:createobject(wscript.shell).run(%~f0 hide,0)(window.close) && exit /b
- :ExecBat
- setlocal enabledelayedexpansion
- set folder=D:SCETCdataXml
- set timestamp_602=0
- set timestamp_603=0
- set /a m=0
- set /a n=0
- for /F %%a in ('dir /b /s /o-d %folder%*602.xml') do (
- set /a m+=1
- set timestamp_602!m!=%%~ta
- )
- for /F %%b in ('dir /b /s /o-d %folder%*603.xml') do(
- set /a n+=1
- set timestamp_603!n!=%%~tb
- )
- set timestamp_602_hh=!timestamp_6021:~11,2!
- set timestamp_602_nn=!timestamp_6021:~14,2!
- set timestamp_602_formatted=!timestamp_602_hh!!timestamp_602_nn!
- set timestamp_603_hh=!timestamp_6031:~11,2!
- set timestamp_603_nn=!timestamp_6031:~14,2!
- set timestamp_603_formatted=!timestamp_603_hh!!timestamp_603_nn!
- set var602=!timestamp_602_formatted:~1!
- set var603=!timestamp_603_formatted:~1!
- set /a time_diff=%var603% - %var602%
- if %time_diff% LSS 1 (
- echo Both *602.xml and *603.xml flow generated within 1 second.
- ) else (
- echo only *603.xml flow generated within 1 second. Deleting latest *603.xml flow...
- for /F %%c in ('dir /b /o-d %folder%*603.xml') do (
- set latest_flow=%%c
- md D:交易失敗流水%date:~0,4%%date:~5,2%%date:~8,2% 2>nul
- xcopy /y %folder%%%c D:交易失敗流水%date:~0,4%%date:~5,2%%date:~8,2%
- call :end
- )
- )
- :end
- choice /t 1 /d y /n>nul
- goto ExecBat
nclick="copycode($('code0'));">復制代碼