Comparing Two Folders and its Subfolder batch file

前端 未结 4 1592
渐次进展
渐次进展 2021-02-09 00:27

I have two folders that contain all the same files and subfolders, but the conents inside each file may have changed. I want to write a batch file that will search through each

4条回答
  •  眼角桃花
    2021-02-09 00:48

    No need for a batch file. A single FC command can do what you want:

    fc folder1\* folder2\*
    

    You can be more specific for the file mask in the first folder if you want. For example folder1\*.txt.

    The command will report on files that exist in folder1 but are missing in folder2. Extra files in folder2 are simply ignored.

    There are a number of options to the FC command. Enter HELP FC or FC /? from the command prompt to get more information.

    EDIT

    Extending the solution to support subfolders is a bit tricky. It is easy to iterate the folder hierarchy for a given root using FOR /R. The problem is getting the relative paths so that the hierarchy can be applied to another root.

    The simplest solution is to use FORFILES instead, since it directly supports relative paths. but FORFILES is... S L O W :/

    At this point, a batch file makes sense:

    @echo off
    setlocal
    set "folder1=c:\path\To\Folder1\Root"
    set "folder2=d:\path\To\Folder2\Root"
    set "fileMask=*"
    
    for /f "delims=" %%F in (
      'echo "."^&forfiles /s /p "%folder1%" /m "%fileMask%" /c "cmd /c if @isdir==TRUE echo @relpath"'
    ) do fc "%folder1%\%%~F\%fileMask%" "%folder2%\%%~F\*"
    

提交回复
热议问题