Если пользователь может указать путь в качестве параметра к пакетному файлу, это лучший вариант, поскольку «% ~ 1» менее проблематичен, чем «% filename%», как я сказал в комментарии к ответу Хелен. Это будет выглядеть примерно так:
setlocal ENABLEEXTENSIONS
FOR %%A IN ("%~1") DO (
IF /I "%%~xA"==".rar" goto ziprar
IF /I "%%~xA"==".zip" goto ziprar
)
goto folder
Если вы не можете использовать параметр, лучшее, что я могу придумать, это:
setlocal ENABLEEXTENSIONS
REM set file="f~p 'o%OS%!OS!^o%%o.rar"
set /p file=Enter a folder path or a zip/rar file name:
FOR /F "tokens=*" %%A IN ("%file%") DO (
IF /I "%%~xA"==".rar" goto ziprar
IF /I "%%~xA"==".zip" goto ziprar
)
goto folder
Возможно, существует допустимое имя файла, которое вызывает синтаксические ошибки, но я не нашел его во время моего ограниченного тестирования.
Возможно, вы захотите рассмотреть базовую проверку папки, а не проверку расширений файлов:
IF EXIST "%~1\*" (goto folder) ELSE goto ziprar