по второму вопросу рекомендуют добавить /s
то есть должно быть
Код:

set sMaskFileArh="c:\arhiv\*.rar"
for /f "delims=" %%i in ('dir %sMaskFileArh% /s /b /a^:-d /o^-d') do (echo %%~fi)
либо использовать pushd и popd
Код:

set sMaskFileArh=*.rar
set sPath=c:\arhiv
pushd %sPath%
for /f "delims=" %%i in ('dir "%sMaskFileArh%" /b /a^:-d /o^-d') do (echo %%~fi)
popd