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
; -
.bat
script : para evitar a expansão de%MYAPPSDIR%
ou%1
pelo 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
- (
%~1
etc. 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