, qui est la meilleure option depuis "% ~ 1" est moins problématique matic que "% filename%" comme je l'ai dit dans un commentaire à la réponse de Helen. Il ressemblerait à quelque chose comme:
setlocal ENABLEEXTENSIONS
FOR %%A IN ("%~1") DO (
IF /I "%%~xA"==".rar" goto ziprar
IF /I "%%~xA"==".zip" goto ziprar
)
goto folder
Si vous ne pouvez pas utiliser un paramètre, le mieux que je pouvais trouver est:
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
Il y a une possibilité qu'il y ait un nom de fichier valide qui provoque erreurs de syntaxe, mais je n'en ai pas trouvé lors de mes tests limités.
Vous pouvez également envisager une vérification de dossier de base plutôt que de vérifier les extensions de fichier:
IF EXIST "%~1\*" (goto folder) ELSE goto ziprar
Puis-je suggérer de passer à une langue plus moderne et plus flexible que lot? Y at-il une raison impérieuse de rester avec le lot? – EBGreen
Non il n'y a pas mais j'utilise déjà un utilitaire supplémentaire pour quelque chose d'autre dans le lot, et sinon il va être à plein d'utilitaires. –
Je suggère vraiment de passer à VBScript/JScript au moins ou même mieux de donner un coup d'oeil à Powershell. – EBGreen