批处理:比较文件大小

时间:2014-11-04 14:16:22

标签: file batch-file compare dos

我已经看到了使用COMP,FC和其他一些文件来比较文件的几种不同方法,但我需要做的是基本文件大小比较,然后如果文件更大,则执行文件的本地副本,到网络文件。

文件可以是200kb和5gb之间的任何内容。所以我真的只对文件大小感兴趣而不是内容。

我更喜欢基本的Dos脚本来运行登录脚本。

Check local file A
Check remote file B
If file A is bigger than file B
  Copy B to A

1 个答案:

答案 0 :(得分:1)

FOR循环展开z将返回文件的大小(例如%~zl)。 延迟变量扩展是此脚本的要求。此特定脚本仅在文件较大时才会复制,但如果大小完全不同,您可以通过将GTR更改为NEQ来轻松更改文件。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET REMOTE_DIR=\\SERVER\share\path\to\files
SET LOCAL_DIR=.

FOR /F %%f IN (files_to_compare.txt) DO (
    SET "REMOTE_FILE=%REMOTE_DIR%\%%~nxf"
    SET "LOCAL_FILE=%LOCAL_DIR%\%%~nxf"
    FOR %%r IN (!REMOTE_FILE!) DO (
        @ECHO [REMOTE] %%~nxr: %%~zr
        FOR %%l IN (!LOCAL_FILE!) DO (
            @ECHO [LOCAL] %%~nxl: %%~zl
            IF %%~zr GTR %%~zl (
                @ECHO %%~nxr: Remote file IS larger [%%~zr] ^> [%%~zl]
                COPY /Y "%%~r" "%%~l"
            ) ELSE (
                @ECHO %%~nxr: Remote file is not larger [%%~zr] ^<= [%%~zl]
            )
        )
    )
)