O interpretador de lote analisa a linha de comando de uma maneira ligeiramente diferente do que o analisador de linha de comando puro (leia respostas a outra pergunta no StackOverflow ) :
-
linha de comando : para evitar a expansão de
%MYAPPSDIR%pelo interpretador de linha de comando, o caractere%porcento deve ser protegido pelo caractere de escape da CLI padrão (^caret):^%MYAPPSDIR^%ou^%1; -
.batscript : para evitar a expansão de%MYAPPSDIR%ou%1pelo intérprete em lote, o caractere%percent deve ser dobrado da seguinte forma:%%MYAPPSDIR%%e%%1, respectivamente.
Para distinguir os parâmetros fornecidos ao seu script em lote:
set "par1=%~1"
if "%par1%"=="" (
echo no parameter supplied
goto :eof
) else (
set "par=%par1:.exe=%"
)
if "%par%"=="%par1%" (
echo .exe not present
) else (
echo .exe present
)
ou (talvez melhor)
set "par1=%~1"
if "%par1%"=="" (
echo no parameter supplied
goto :eof
) else (
set "par=%par1:~-4%"
)
if /I "%par%"==".exe" (
echo .exe present
) else (
echo .exe not present
)
ou (talvez o melhor)
set "par1=%~1"
if "%par1%"=="" (
echo no parameter supplied
goto :eof
) else (
set "par=%~x1"
)
if /I "%par%"==".exe" (
echo .exe present
) else (
echo .exe not present
)
Recursos (leitura obrigatória):
- (referência de comando) Um índice A-Z da linha de comando do Windows CMD
- (particularidades adicionais) Sintaxe da linha de comando do shell do Windows CMD
- (
%~1etc. página especial) Argumentos da linha de comando (parâmetros) - (
%par1:~-4%substring) Variáveis: extrair parte de uma variável - (
%par1:.exe=%) Editar / substituir variável