我已经看到了使用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
答案 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]
)
)
)
)