我想创建一个批处理文件,将两个文件夹与同一组文件进行比较,并将大小不同的文件从一个文件夹复制到另一个文件夹。我尝试将以下问题的答案作为起点进行调整,但即使这样也行不通。
@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
)
)
UPDATE1: 我弄清楚上面例子中出了什么问题;它是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
)
)
UPDATE2: 所以这最终做了我想要的(将两个文件夹与同一组文件进行比较,并将大小不同的文件从一个文件夹复制到另一个文件夹):
@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 xcopy "%folder1%\%%a" "%folder2%" /y
)
)
答案 0 :(得分:0)
这样做的经典方法是
xcopy /L /y /d "directory1\*" "directory2"
/L
列出要复制的文件。 /d
实际上说“如果第一个参数中的源文件晚于第二个参数中的文件”,这可能不是您想要的。 /y
会阻止提示过度写入(使用/L
开关,只创建一个列表,但仍然......)
源中存在但未存在于目标中的文件将被复制到目标(或使用/L
开关时列出)
删除/L
开关以实际执行复制。
添加/s
以重复源的所有子目录。