2014-01-13 62 views
1

我想驗證兩個文件夾的文件數是否相同。比較兩個文件夾中的文件數

例如,如果有5個文件夾中c:\Users\abc\INBOX,我想驗證,也有5個文件夾中c:\Users\abc\OUTBOX

我怎樣才能做到這一點?

+0

發佈一些你已經寫到現在的代碼。 –

+0

[批處理文件 - 計算文件夾中的文件數量和存儲在變量中]的可能的重複(http://stackoverflow.com/questions/11004045/batch-file-counting-number-of-files-in-folder-and - 存儲變量) –

回答

0

嘗試這樣的事:

@echo off 

set $Folder1="c:\Users\abc\INBOX" 
set $folder2="c:\Users\abc\OUTBOX" 
set $count=1 

setlocal EnableDelayedExpansion 

for %%x in (%$Folder1% %$Folder2%) do (
for /f "tokens=1 delims= " %%a in ('dir %%x ^| find /i "File(s)"') do (
set $Total!$Count!=%%a) 
set /a $Count+=1) 

If %$Total1% Equ %$Total2% (echo Same number of files) else (echo Different number of files) 

如果你的系統是不是英文的,你必須改變"File"與您的系統語言根據(即:「Fichier(S)」在法語)

編輯:

要與第一個比較詳細目錄:

@echo off 

set $Folder1="c:\Users\abc\INBOX" 

set $folder2="c:\Users\abc\OUTBOX" 
set $Folder3=c:\Users\abc\OUTBOX\PROC 
set $Folder4=c:\Users\abc\OUTBOX\PEND 
set $Count=0 

setlocal EnableDelayedExpansion 

for %%x in (%$Folder1% %$Folder2% %$Folder3% %$Folder4%) do (
    for /f "tokens=1 delims= " %%a in ('dir %%x /a-d ^| find /i "File(s)"') do (
       call:test %%x %%a 
       if !$count! Equ 0 set $Ref=%%a 
           set $Count=1)) 
exit/b 

:test 

if !$count! Equ 1 (
    If "%$Ref%" Equ "%2" (echo %$Folder1% SAME %1) else (echo %$Folder1% DIFFERENT %1)) 
+0

嘿,感謝它的工作。我們可以比較從1個文件夾c:\ Users \ abc \ INBOX到3個不同文件夾c:\ Users \ abc \ OUTBOX,c:\ Users \ abc \ OUTBOX \ PROC&c:\ Users \ abc \ OUTBOX \ PEND。意思如果INBOX有5個文件,那麼這5個文件可以出現在OUTBOX文件夾或/和OUTBOX \ PROC或\和OUTBOX \ PEND.How to do? – user3164140

+0

檢查編輯比較更多文件夾與第一個 – SachaDee

0
@echo off 

    setlocal enableextensions disabledelayedexpansion 

    call :getNumberOfFilesInFolderList nINBOX "c:\Users\abc\INBOX" 
    call :getNumberOfFilesInFolderList nFiles "c:\Users\abc\OUTBOX" "c:\Users\abc\OUTBOX\PROC" "c:\Users\abc\OUTBOX\PEND" 

    if %nINBOX% EQU %nFiles% (
     echo SAME number of files 
    ) else (
     echo DIFFERENT number of files 
    ) 

    endlocal 
    exit /b 

:getNumberOfFilesInFolderList variable folder1 [[folder2] ... ] 
    setlocal enableextensions disabledelayedexpansion 
    set "variable=" 
    set /a "total=0" 
    for %%a in (%*) do if not defined variable (set "variable=%%~a") else (
     for /f %%b in ('dir /a-d "%%~a" 2^>nul ^| findstr /r /c:"^[ ][ ][ ]*[0-9]"') do set /a "total+=%%b" 
    ) 
    endlocal & set "%~1=%total%" & echo %total% 
    goto :eof 
0

這應該比較兩個文件夾。

@echo off 
set aa=0&set bb=0 
for %%a in ("c:\Users\abc\INBOX\*") do set /a aa+=1 
for %%a in ("c:\Users\abc\OUTBOX\*") do set /a bb+=1 

if %aa% EQU %bb% (
    echo they have the same number of visible files. 
) else (
    echo the file count is different 
)