Un ejemplo más avanzado:
⍟ argumentos ilimitados.
⍟ existe en el sistema de archivos ( ¿ fileo directory?) O genérico string.
⍟ especificar si es un archivo
⍟ especificar es un directorio
⍟ sin extensiones, ¡funcionaría en scripts heredados!
⍟ código mínimo ☺
@echo apagado
:lazo
:: -------------------------- tiene argumento?
si ["% ~ 1"] == [""] (
echo hecho.
ir al final
)
:: -------------------------- argumento existe?
si no existe% ~ s1 (
eco no existe
) más (
el eco existe
si existe% ~ s1 \ NUL (
echo es un directorio
) más (
echo es un archivo
)
)
:: --------------------------
cambio
Ir a bucle
:final
pausa
✨ otras cosas..✨
■ en %~1: ~elimina cualquier envoltorio "o '.
■ in %~s1- the shace que la ruta sea DOS 8.3 naming, lo cual es un buen truco para evitar espacios en el nombre de archivo mientras verifica cosas (y de esta manera no es necesario envolver el recurso con más "s.
■ el ["%~1"]==[""]"no puedo estar seguro" si el argumento es un archivo / directorio o simplemente una cadena genérica todavía, por lo que en su lugar la expresión usa corchetes y el original sin modificar %1(solo sin el "ajuste, si lo hay ..)
si no hubo argumentos de si lo hemos usado shifty el puntero de lista de argumentos ha pasado el último, la expresión se evaluará como [""]==[""].
■ esto es lo más específico que puede ser sin usar más trucos (funcionaría incluso en los scripts por lotes de Windows-95 ...)
■ ejemplos de ejecución
guárdalo como identifier.cmd
puede identificar un número ilimitado de argumentos (normalmente está limitado a %1- %9), solo recuerde envolver los argumentos con comas invertidas, o use la denominación 8.3, o arrástrelos y suéltelos (automáticamente hace cualquiera de los anteriores).
esto le permite ejecutar los siguientes comandos:
⓵ identifier.cmd c:\windows
y para conseguir
existe
es un directorio
hecho
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
y para conseguir
existe
es un archivo
hecho
⓷ y múltiples argumentos (por supuesto, este es el problema ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
y conseguir
existe
es un directorio
existe
es un archivo
existe
es un archivo
no existe
hecho.
naturalmente, puede ser mucho más complejo,
pero los buenos ejemplos siempre deben ser simples y mínimos. :)
Espero que ayude a alguien :)
publicado aquí: CMD Ninja - Procesamiento ilimitado de argumentos, identificación de si existe en el sistema de archivos, identificación de archivo o directorio
y aquí hay un ejemplo de trabajo que toma cualquier cantidad de archivos APK (aplicaciones de Android) y los instala en su dispositivo a través de la consola de depuración (ADB.exe):
Haga de la publicación anterior un instalador masivo de APK que no use ADB Install-Multi Syntax