1

I want to verify that two folders have the same number of files.

For example if there are 5 files in folder c:\Users\abc\INBOX, I want to verify that there are also 5 files in folder c:\Users\abc\OUTBOX

How can I achieve this?

foxidrive
  • 40,353
  • 10
  • 53
  • 68
user3164140
  • 591
  • 2
  • 8
  • 15
  • post some codes which you have written till now. – Charles Stevens Jan 13 '14 at 10:11
  • possible duplicate of [batch file - counting number of files in folder and storing in a varible](http://stackoverflow.com/questions/11004045/batch-file-counting-number-of-files-in-folder-and-storing-in-a-varible) – Loïc MICHEL Jan 13 '14 at 10:34

3 Answers3

0

TRy something like this :

@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)

If your system is not in english you have to change the "File" according with your system language (ie: "Fichier(s)' in French)

EDIT :

To compare more Directory with the FIRST ONE :

@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))
SachaDee
  • 9,245
  • 3
  • 23
  • 33
  • Hey Thanks it works. Can we compare Count of files from 1 folder c:\Users\abc\INBOX to 3 different folders c:\Users\abc\OUTBOX, c:\Users\abc\OUTBOX\PROC & c:\Users\abc\OUTBOX\PEND. Means If INBOX is having 5 files then these 5 files can be present at OUTBOX folder or/and OUTBOX\PROC or\and OUTBOX\PEND.How to do? – user3164140 Jan 13 '14 at 11:08
  • Check the EDIT for comparing more Folder with the FIRST ONE – SachaDee Jan 13 '14 at 14:42
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
MC ND
  • 69,615
  • 8
  • 84
  • 126
0

This should compare two folders.

@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
)
foxidrive
  • 40,353
  • 10
  • 53
  • 68