Un esempio più avanzato:
⍟ argomenti illimitati.
⍟ esistono su file system (o file
o directory
?) O generico string
.
⍟ specificare se è un file
⍟ specificare è una directory
⍟ nessuna estensione, funzionerebbe negli script legacy!
⍟ codice minimo ☺
@echo off
:ciclo continuo
:: -------------------------- ha argomento?
se ["% ~ 1"] == [""] (
eco fatto.
vai alla fine
)
:: -------------------------- argomento esiste?
se non esiste% ~ s1 (
l'eco non esiste
) altro (
l'eco esiste
se esiste% ~ s1 \ NUL (
echo è una directory
) altro (
echo è un file
)
)
:: --------------------------
cambio
goto loop
:fine
pausa
✨ altre cose ..
■ in %~1
- ~
rimuove qualsiasi involucro "
o '
.
■ in %~s1
- s
rende il percorso DOS 8.3 naming
, che è un bel trucco per evitare spazi nel nome del file durante il controllo delle cose (e in questo modo non c'è bisogno di racchiudere la risorsa con più "
s.
■ ["%~1"]==[""]
"non posso essere sicuro" se l'argomento è ancora un file / directory o solo una stringa generica, quindi invece l'espressione usa le parentesi e l'originale non modificato %1
(solo senza il "
wrapping, se presente ..)
se non ci fossero argomenti di if abbiamo usato shift
e il puntatore alla lista degli argomenti ha passato l'ultimo, l'espressione sarà valutata a [""]==[""]
.
■ questo è tanto specifico che puoi essere senza usare più trucchi (funzionerebbe anche negli script batch di Windows-95 ...)
■ esempi di esecuzione
salvalo come identifier.cmd
può identificare un numero illimitato di argomenti (normalmente sei limitato a %1
- %9
), ricorda solo di racchiudere gli argomenti tra virgolette, o usare i nomi 8.3, o trascinarli sopra (fa automaticamente uno dei due precedenti).
questo ti permette di eseguire i seguenti comandi:
⓵ identifier.cmd c:\windows
e per ottenere
esistere
è una directory
fatto
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
e per ottenere
esistere
è un file
fatto
⓷ e più argomenti (ovviamente questo è l'intero affare ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
e per ottenere
esistere
è una directory
esistere
è un file
esistere
è un file
non esiste
fatto.
naturalmente può essere molto più complesso,
ma i begli esempi dovrebbero essere sempre semplici e minimali. :)
Spero che aiuti chiunque :)
pubblicato qui: CMD Ninja - Elaborazione illimitata di argomenti, identificazione se esiste nel file system, identificazione se file o directory
ed ecco un esempio funzionante che prende qualsiasi quantità di file APK (app Android) e li installa sul tuo dispositivo tramite debug-console (ADB.exe):
Rendi il post precedente un programma di installazione APK di massa che non utilizza ADB Install-Multi sintassi