Batch file 批处理文件以比较两个文件夹中的相同文件
我想创建一个批处理文件来比较两个文件夹与同一组文件,并将大小不同的文件从一个文件夹复制到另一个文件夹。我试着从另一个问题的答案改编如下,作为一个起点,但即使这样也不行Batch file 批处理文件以比较两个文件夹中的相同文件,batch-file,Batch File,我想创建一个批处理文件来比较两个文件夹与同一组文件,并将大小不同的文件从一个文件夹复制到另一个文件夹。我试着从另一个问题的答案改编如下,作为一个起点,但即使这样也不行 @echo off Set folder1="C:\folder1" Set folder2="C:\folder2" Cd /D "%folder1%" For %%a in (*.*) do ( For %%b in ("%folder2%\%%a") do ( If "%%~Za" neq "%%~Zb"
@echo off
Set folder1="C:\folder1"
Set folder2="C:\folder2"
Cd /D "%folder1%"
For %%a in (*.*) do (
For %%b in ("%folder2%\%%a") do (
If "%%~Za" neq "%%~Zb" echo Different file size in %%a
)
)
更新1:
我找出了上面例子中的错误;它是set folder命令中目录周围的引号。以下是它应该做的工作:
@echo off
Set folder1=C:\folder1
Set folder2=C:\folder2
Cd /D "%folder1%"
For %%a in (*.*) do (
For %%b in ("%folder2%\%%a") do (
If %%~za neq %%~zb echo Different file size %%a
)
)
更新2:
因此,这最终满足了我的要求(将两个文件夹与同一组文件进行比较,并将大小不同的文件从一个文件夹复制到另一个文件夹):
经典的方法是
xcopy /L /y /d "directory1\*" "directory2"
/L
列出了要复制的文件/d
实际上表示“如果第一个参数中的源文件晚于第二个参数中的文件”,这可能不是您想要的。/y
可防止出现OVERITE提示(使用/L
开关,仅创建一个列表,但仍然…)
源中存在但不在目标中的文件将被复制到目标(如果使用了/L
开关,则列出)
移除/L
开关以实际执行复制
添加
/s
以对源代码的所有子目录重复。什么不起作用-你期望发生什么不起作用-你收到了什么错误(如果有)?另一个问题是什么?你能链接到它吗?也许Robocopy也有一个DIFF功能?@fvrghl@unclesmeat它会对文件夹中的每个文件发出“不同的文件大小…”,即使它们大小相同。如果有必要的话,它还会对同一条语句重复两次。我想根据文件大小而不是时间戳进行复制。
xcopy /L /y /d "directory1\*" "directory2"