如何比较不同文件夹中的文件与Windows批处理脚本

时间:2016-01-24 16:32:35

标签: windows batch-file

我正在尝试比较具有相同名称但位于不同文件夹中的文件。我从bat.file调用我的diffTool.exe,并将文件名作为参数提供给此exe。

我的脚本是这样的:

@ECHO OFF

setlocal 

set MYDIR="D:\Workspace\diffTool\Release"
set firstFolder=%MYDIR%\folder1
set secondFolder=%MYDIR%\folder2

for /r "%firstFolder%" %%F in (.) do (
    echo %%F
    for /r "%secondFolder%" %%G in (%%F) do (   
       call D:\Workspace\diffTool\Release\diffTool.exe %%F %%G
    )
 )

如何从字符串中获取文件名?如何将此文件名传递给第二个循环并使用这些文件名调用exe?

输出是这样的:

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

@ECHO OFF

setlocal 

set "MYDIR=D:\Workspace\diffTool\Release"
set "firstFolder=%MYDIR%\folder1"
set "secondFolder=%MYDIR%\folder2"

for /r "%firstFolder%" %%F in (*) do (
    for /r "%secondFolder%" %%G in (*) do (   
       call D:\Workspace\diffTool\Release\diffTool.exe "%%F" "%%G"
    )
 )
pause

修改

要仅比较具有相同名称+扩展名的文件,请使用:

@ECHO OFF

setlocal 

set "MYDIR=D:\Workspace\diffTool\Release"
set "firstFolder=%MYDIR%\folder1"
set "secondFolder=%MYDIR%\folder2"

for /r "%firstFolder%" %%F in (*) do (
    for /r "%secondFolder%" %%G in (*) do (   
       if "%%~nxF"=="%%~nxG" call D:\Workspace\diffTool\Release\diffTool.exe "%%F" "%%G"
    )
 )
pause