2013-10-01 211 views
0

两个文件夹比较文件我的文件进行比较,其中有像使用批处理脚本

folderA文件名的两个文件夹:[a.f90,b.f90,...] FolderB中:[a_recoded。 f90,b_recoded.f90,...]

我想比较folderA中的a.f90与folderB中的a_recoded.f90。

是干什么用的是:

@echo off 
set folderA=D:\folderA 
set folderB=D:\folderARenamed 
set /a i=0 
set /a j=0 
cd %folderA% 
FOR %%f in (*.f90) DO (set /a i+=1 & for %%r in (%folderB%\*.f90) DO (set /a j+=1 & if %i% EQU %j% FC %%f %% r)) 

它并不能帮助我,谁能帮助我如何做到这一点comparsion。

+0

为什么这是不工作? set/a i = 0 set/a i + = 1 – Thiru

+0

这让我很震惊,如果这些文件被重新编码,它们将不会相同。 – foxidrive

回答

2

试试这个:

@echo off &setlocal 
set "folderA=D:\NONMEM7.3beta7.0" 
set "folderB=D:\NONMEM7.3beta7.0Renamed" 
for %%a in ("%folderA%\*.f90") do if not exist "%folderB%\%%~na_recoded%%~xa" echo %%~na_recoded%%~xa not found in %folderB%. 
for %%a in ("%folderB%\*.f90") do for /f "delims=_" %%b in ("%%~na") do if not exist "%folderA%\%%~b%%~xa" echo %%~b%%~xa not found in %folderA%. 
+1

+1这看起来不错,可以判断这些文件是否存在 - 我认为OP希望做一个二进制比较。目前尚不清楚。 – foxidrive

0

感谢您的帮助,我现在通过文件夹也可以使用下面的代码回路:

@echo off 
set vss=D:\FolderA 
set renamed=D:\FolderARenamed 

cd %renamed% 
FOR /D %%d in (*) DO (
    cd %renamed%\%%d 
    FOR %%f in (*.f90, *.f, *.c) DO (
     if exist %vss%\%%d\%%f fc %%f %vss%\%%d\%%f 
     if not exist %vss%\%%d\%%f fc %%f %vss%\%%d\%%~nf_Recoded.f90 
    ) 
)