Um exemplo mais avançado:
⍟ argumentos ilimitados.
⍟ existe no sistema de arquivos ( file
ou directory
?) Ou genérico string
.
⍟ especifique se é um arquivo
⍟ especificar é um diretório
⍟ sem extensões, funcionaria em scripts legados!
⍟ código mínimo ☺
@echo off
:ciclo
:: -------------------------- tem argumento?
if ["% ~ 1"] == [""] (
eco feito.
ir para o fim
)
:: -------------------------- existe argumento?
se não existir% ~ s1 (
eco não existe
) outro (
eco existe
se existir% ~ s1 \ NUL (
echo é um diretório
) outro (
echo é um arquivo
)
)
:: --------------------------
mudança
goto loop
:fim
pausa
✨ outras coisas..✨
■ em %~1
- ~
remove qualquer embalagem "
ou '
.
■ in %~s1
- o s
torna o caminho DOS 8.3 naming
, que é um bom truque para evitar espaços no nome do arquivo ao verificar as coisas (e desta forma não há necessidade de envolver o recurso com mais "
s.
■ o ["%~1"]==[""]
"não posso ter certeza" se o argumento é um arquivo / diretório ou apenas uma string genérica, então, em vez disso, a expressão usa colchetes e o original não modificado %1
(apenas sem a "
quebra, se houver ..)
se não houver argumentos de se usamos shift
e o ponteiro da lista de argumentos passou o último, a expressão será avaliada como [""]==[""]
.
■ isso é o mais específico que você pode ser sem usar mais truques (funcionaria mesmo em scripts em lote do Windows 95 ...)
■ exemplos de execução
salve como identifier.cmd
ele pode identificar argumentos ilimitados (normalmente você está limitado a %1
- %9
), apenas lembre-se de envolver os argumentos com vírgulas invertidas, ou usar a nomenclatura 8.3, ou arrastar e soltar (automaticamente faz qualquer um dos itens acima).
isso permite que você execute os seguintes comandos:
⓵ identifier.cmd c:\windows
e para obter
existir
é um diretório
feito
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
e para obter
existir
é um arquivo
feito
⓷ e vários argumentos (claro que isso é tudo ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
e para obter
existir
é um diretório
existir
é um arquivo
existir
é um arquivo
não existe
feito.
naturalmente, pode ser muito mais complexo,
mas bons exemplos devem ser sempre simples e mínimos. :)
Espero que ajude alguém :)
publicado aqui: CMD Ninja - processamento ilimitado de argumentos, identificando se existe no sistema de arquivos, identificando se o arquivo ou diretório
e aqui está um exemplo de trabalho que pega qualquer quantidade de arquivos APK (aplicativos Android) e os instala em seu dispositivo por meio do console de depuração (ADB.exe):
Torne a postagem anterior um instalador de APK em massa que não usa a sintaxe de instalação múltipla ADB