Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 比较两个windows文件夹的差异,并将其发布到新文件夹(无法比较)_Batch File_Cmd_Beyondcompare_Beyondcompare3 - Fatal编程技术网

Batch file 比较两个windows文件夹的差异,并将其发布到新文件夹(无法比较)

Batch file 比较两个windows文件夹的差异,并将其发布到新文件夹(无法比较),batch-file,cmd,beyondcompare,beyondcompare3,Batch File,Cmd,Beyondcompare,Beyondcompare3,我有下面的场景 Folder 1 -Folder a -File1.txt -Img1.png -Folder b -File2.txt -Img2.png Folder 2 -Folder a -File1.txt (File 1 modified) -Img1.png (No change) -Folder b -File3.txt (New file added) -Img2.pn

我有下面的场景

Folder 1
 -Folder a
      -File1.txt
      -Img1.png
 -Folder b
      -File2.txt
      -Img2.png

Folder 2
 -Folder a
      -File1.txt (File 1 modified)
      -Img1.png   (No change)
 -Folder b
      -File3.txt (New file added)
      -Img2.png  (no change)
基本上,我希望输出文件夹包含以下文件(在原始结构中修改或添加,保留结构)


我正在尝试使用Beyond Compare命令行来执行此操作,但我找不到任何适合的参数,我不想手动循环所有文件(太多文件)以进行更改或使用SVN。我可以使用任何其他工具/脚本来实现这一点吗

如果更改仅在“文件夹2”结构中,而文件夹1将始终处于未更改状态,则我可以使用它:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=2,* DELIMS=  " %%A IN ('ROBOCOPY "Folder 2" "Folder 1" /MIR /XX /NDL /NJH /NJS /L') DO (
  SET tmpFolder=%%~dpB
  SET tmpFolder=!tmpFolder:Folder 2=OutputFolder!
  XCOPY "%%~B" "!tmpFolder!" /E /F /H /R /C
)
ENDLOCAL
Robocopy将仅列出文件夹2和文件夹1之间的更改,
for循环将文件复制到“outputfolder”,保持文件夹结构

谢谢!是的,关于文件夹的假设是正确的,但它似乎不适合我。有(错误)消息吗?你原来的折叠结构怎么样?啊。。。哈哈哈。。。我忘了从
XCOPY
中删除
/L
-Param。所以
XCOPY
将只列出atm,而不复制xD对不起。我从原始帖子中删除了它。仍然没有(错误)-消息或您的原始文件夹结构。。。你的确切代码怎么样?不,和上面一样的文件夹结构,我会调试邮件然后回来!谢谢
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=2,* DELIMS=  " %%A IN ('ROBOCOPY "Folder 2" "Folder 1" /MIR /XX /NDL /NJH /NJS /L') DO (
  SET tmpFolder=%%~dpB
  SET tmpFolder=!tmpFolder:Folder 2=OutputFolder!
  XCOPY "%%~B" "!tmpFolder!" /E /F /H /R /C
)
ENDLOCAL