用于复制大于700MB的最新文件的批处理脚本

时间:2014-03-13 13:40:39

标签: windows batch-file

我正在尝试编写一个批处理脚本,该脚本将复制在大于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

1 个答案:

答案 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中所述。)