我希望让我的批处理文件能够识别用户在以下情况下输入的文件的扩展名:
用户必须输入文件夹或.zip / .rar文件。
如果是文件夹,则应使用GOTO:文件夹 如果它是.zip / .rar,它应该使用GOTO:ziprar
(如果可能没有第三方软件,请不要再说了)
答案 0 :(得分:3)
您可以从环境变量中提取子字符串,您可以使用它来获取文件扩展名:
set FILENAME=C:\mypath\myfile.rar
if "%FILENAME:~-4%"==".rar" (
echo It is a RAR file!
) else (
echo Not a RAR file
)
答案 1 :(得分:1)
如果用户可以指定路径作为批处理文件的参数,那么这是最好的选择,因为“%〜1”比“%filename%”问题要少,就像我在对Helen的答案的评论中所说的那样。它看起来像是:
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