我正在尝试编写一个批处理脚本,该脚本将复制在大于700MB的目录中创建的最新文件。我需要文件大小,因为我不想复制当前正在创建的文件,因此小于典型的备份文件。
有人能够修改下面的脚本以包含> 700MB的要求吗?
谢谢!
:: Erase the content of the "sql_individual_backup" directory
cd "C:\Backup\sql_individual_backup"
del *.* /Q
:: Start to copy over the most recent file
@echo off
set "source=C:\Backup\sql_hourly"
set "dest=C:\Backup\sql_individual_backup"
pushd "%source%" ||(
echo.Source does not exist&pause&goto EOF)
for /f "tokens=*" %%f in (
'dir /A-D /OD /B') Do set "file=%%f"
popd
xcopy /d /i "%source%\%file%" "%dest%\"
:: Close the command prompt window
exit 0
答案 0 :(得分:0)
This SO answer概述了如何在批处理脚本中获取文件的大小。有了这些信息,您应该能够扩展脚本以满足您的要求。
@echo off
setlocal
set file="test.cmd"
set maxbytesize=1000
FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA
if %size% LSS %maxbytesize% (
echo.File is ^< %maxbytesize% bytes
) ELSE (
echo.File is ^>= %maxbytesize% bytes
)
但正如我在评论中已经提到的,我不会依赖于固定的文件大小,而是检查文件当前是否被写入=已锁定,如this SO thread中所述。)