CMD: распознавание расширений файлов? - PullRequest
0 голосов
/ 28 августа 2009

Я хочу, чтобы мой пакетный файл распознавал расширение файла, который вводит пользователь, в следующей ситуации:

Пользователь должен ввести в папку ИЛИ файл .zip / .rar.

если это папка, она должна использовать папку GOTO: если это .zip / .rar, он должен использовать GOTO: ziprar

(если это возможно без программного обеспечения сторонних производителей, не говорите об этом, пожалуйста)

Ответы [ 2 ]

3 голосов
/ 28 августа 2009

Вы можете извлечь подстроки из переменных среды, которые вы можете использовать, чтобы получить расширение файла:

set FILENAME=C:\mypath\myfile.rar
if "%FILENAME:~-4%"==".rar" (
  echo It is a RAR file!
) else (
  echo Not a RAR file
)
1 голос
/ 29 августа 2009

Если пользователь может указать путь в качестве параметра к пакетному файлу, это лучший вариант, поскольку «% ~ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...