感谢任何人的帮助。我对此深感困惑。
我正在编写一个bat脚本,以将文件从一个文件夹移动到另一个文件夹。 (这部分很简单)
但是,在实际移动文件之前,我想检查文件的大小是否每45秒更改一次。如果文件的最后一个大小等于当前大小,则最后将其移动。 (之所以进行此检查,是因为源文件夹中的文件可能仍在写入中,我们不希望在完成之前将其移动)
请帮助,我愿意接受建议
当前有此代码并被卡住了:
for %%a in (%_fromFolder%\*%_fileName%*%_extension%) DO (
echo %%~za
set "fname=%~1"
set fSize = %%~za
timeout /t 45 /nobreak
:loop
if fSize == %%~za (
echo %fSize%
echo %%~za
goto :moveF
) else (
set fSize =%%~za
timeout /t 45 /nobreak
goto :loop
)
)
:moveF
move %~1 %_toFolder%
答案 0 :(得分:1)
我已经在代码中添加了注释,以解释其功能。
REM Get list of files
for %%G in ("%_fromFolder%\*%_fileName%*%_extension%") DO (
REM Call function to check for the size of the file
CALL :CHECK "%%G"
REM Back from the Function. now move the file
move "%%~G" "%_toFolder%"
)
GOTO :EOF
:CHECK
REM set the size of the file to a variable
set "fsize=%~z1"
REM delay program
timeout /t 45 /nobreak
REM check to see if the file size is the same. IF it is then leave the function
if "%fSize%"=="%~z1" GOTO :EOF
REM Go back to the check if the file size is not the same
GOTO CHECK