Search code examples
windowsbatch-filebatch-processing

Move 1000 Files To Folders, Each 100 to 1 Folder Batch


The idea is moving Files to Folders Like :

The Files Names:

1.pdf,2.pdf,3.pdf.....1000.pdf

And the results have to be:

(1.pdf-100.pdf) To Folder 1
(101.pdf-200.pdf) To Folder 2
(201.pdf-300.pdf) To Folder 3
..

This Code is working but it start with (0) and not (1)

    @echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for %%a in (*.pdf) do (
    echo %%~na|FINDSTR /R /C:"^[0-9]*$" >nul 2>nul&&(
        set /a NumBas=%%~na/1000*1000
        set /a NumHaut=^(%%~na/1000*1000^)+999
        echo %%~a -^> !NumBas!-!NumHaut!
        IF NOT EXIST "!NumBas!-!NumHaut!" MD "!NumBas!-!NumHaut!"
        MOVE /Y "%%~a" "!NumBas!-!NumHaut!\%%~a" >nul
    )
)

Solution

  • Simpler:

    @echo off
    setlocal EnableDelayedExpansion
    
    for %%a in (*.pdf) do (
       set /A "Num=(%%~Na-1)/100+1, NumBas=(Num-1)*100+1, NumHaut=Num*100"
       IF NOT EXIST "!NumBas!-!NumHaut!" MD "!NumBas!-!NumHaut!"
       MOVE /Y "%%~a" "!NumBas!-!NumHaut!\%%~a" >nul
    )
    

    If you want folders with simpler "Folder 1", "Folder 2", etc names, just use "Folder !Num!" and eliminate NumBas and NumHaut variables.