RIL
RIL

Reputation: 187

Loop over an interval of files

I would like to define a for-loop (windows command line) that iterates over (numbered) intervals of files in a directory, say 1..100, and then 101..200, and 201..300 etc [Edit: regardless of the files names]. See following pseudo-code:

for %WORKDIR% %%f(1..100) in (*.htm) do (
   REM DoSomething with %%f
)

for %WORKDIR% %%f(101..200) in (*.htm) do (
   REM DoSomething with %%f
)

...etc

Q: Is there a way to define "numbered intervals" of files from command line?

// Rolf

Upvotes: 0

Views: 151

Answers (1)

user4739240
user4739240

Reputation:

You can place each function in a separate file:

:1to100
setlocal enabledelayedexpansion

set /a "file=1"

rem Skip 0 (skip=0 is omitted because it's illegal) and process 100.
for /f %%f in ('dir %workdir%\*.htm /b') do (
    if !file! gtr 100 (exit /b) else (set /a "file+=1")
    echo Do something with %%f.
)

endlocal
goto :eof

:100to200
setlocal enabledelayedexpansion

set /a "file=1"

rem Skip 100 and process 100.
for /f "skip=100" %%f in ('dir %workdir%\*.htm /b') do (
    if !file! gtr 100 (exit /b) else (set /a "file+=1")
    echo Do something with %%f.
)

endlocal
goto :eof

Upvotes: 1

Related Questions