Você precisa da /s
switch
Alterar
for /f "delims=" %%i in ('dir /b ^|find "."') do call :sub1
para
for /f "delims=" %%i in ('dir /b /s ^|find "."') do call :sub1
e altere
for /f "delims=" %%i in ('dir /b ^|find "."') do set "fileName=%%i" &call :sub2
para
for /f "delims=" %%i in ('dir /b /s ^|find "."') do set "fileName=%%i" &call :sub2