Como já foi dito, os parâmetros passados pela linha de comando podem ser acessados em arquivos em lotes com a notação %1para %9. Há também outros dois tokens que você pode usar:
%0é o nome do arquivo executável (arquivo em lote), conforme especificado na linha de comando .
%*são todos os parâmetros especificados na linha de comando - isso é muito útil se você deseja encaminhar os parâmetros para outro programa.
Também há muitas técnicas importantes a serem observadas, além de simplesmente como acessar os parâmetros.
Verificando se um parâmetro foi passado
Isso é feito com construções como IF "%~1"=="", o que é verdadeiro se e somente se nenhum argumento foi passado. Observe o caractere til que faz com que as aspas circundantes sejam removidas do valor de %1; sem um til, você obterá resultados inesperados se esse valor incluir aspas duplas, incluindo a possibilidade de erros de sintaxe.
Lidar com mais de 9 argumentos (ou apenas facilitar a vida)
Se você precisar acessar mais de 9 argumentos que você tem que usar o comando SHIFT. Este comando altera os valores de todos os argumentos em um único lugar, de modo que %0assume o valor de %1, %1assume o valor de %2etc. %9assume o valor do décimo argumento (se houver algum), que não estava disponível por meio de nenhuma variável antes de chamar SHIFT(digite comando SHIFT /?para mais opções).
SHIFTtambém é útil quando você deseja processar facilmente parâmetros sem exigir que eles sejam apresentados em uma ordem específica. Por exemplo, um script pode reconhecer os sinalizadores -ae -bem qualquer ordem. Uma boa maneira de analisar a linha de comando nesses casos é
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Esse esquema permite analisar linhas de comando bastante complexas sem enlouquecer.
Substituição de parâmetros de lote
Para parâmetros que representam nomes de arquivos, o shell fornece muitas funcionalidades relacionadas ao trabalho com arquivos que não são acessíveis de nenhuma outra maneira. Essa funcionalidade é acessada com construções que começam com %~.
Por exemplo, para obter o tamanho do arquivo passado como argumento, use
ECHO %~z1
Para obter o caminho do diretório de onde o arquivo em lotes foi iniciado (muito útil!), Você pode usar
ECHO %~dp0
Você pode visualizar toda a gama desses recursos digitando CALL /?no prompt de comando.