【问题标题】:Batch script to copy latest file larger than 700MB用于复制大于 700MB 的最新文件的批处理脚本
【发布时间】:2014-03-13 13:40:39
【问题描述】:

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

【问题讨论】:

  • 检查当前的写入访问(例如this SO thread 中解释的)而不是依赖某些文件大小限制(这是非常危险的)不是更好吗?

标签: windows batch-file


【解决方案1】:

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
)

但正如我在 cmets 中已经提到的,我不会依赖固定的文件大小,而是检查文件当前是否写入 = 已锁定,如 this SO thread 中所述)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多