Більш просунутий приклад:
Необмежена кількість аргументів.
⍟ існують у файловій системі ( fileабо directory?), Або загальній string.
⍟ вкажіть, чи є файл
⍟ вказати - це каталог
Чи не ⍟ немає розширення, буде працювати в старих скриптах!
⍟ мінімальний код ☺
@echo вимкнено
: цикл
:: -------------------------- має аргумент?
якщо ["% ~ 1"] == [""] (
відлуння зроблено.
перейти до кінця
)
:: -------------------------- аргумент існує?
якщо не існує% ~ s1 (
ехо не існує
) ще (
ехо існує
якщо існує% ~ s1 \ NUL (
echo - це каталог
) ще (
echo - це файл
)
)
:: --------------------------
зрушення
goto loop
: кінець
пауза
✨ інші речі..✨
■ в %~1- ~видаляє будь-яке обгортання "або '.
■ in %~s1- sшлях робить шлях DOS 8.3 naming, що є приємним трюком, щоб уникати пробілів в імені файлу під час перевірки матеріалів (і таким чином немає необхідності обертати ресурс більшою кількістю "s.
■ ["%~1"]==[""]"не можу бути впевненим", якщо аргументом є файл / каталог або просто загальний рядок, тому замість цього вираз використовує дужки та оригінал немодифікований %1(лише без "обтікання, якщо такий є).
якщо не було аргументів, якщо ми використовували, shiftа покажчик arg-list передав останній, вираз буде обчислено [""]==[""].
■ це настільки конкретно, наскільки ви можете бути, не використовуючи більше хитрощів (це буде працювати навіть у пакетних сценаріях Windows-95 ...)
■ приклади виконання
зберегти як identifier.cmd
він може ідентифікувати необмежену кількість аргументів (як правило, ви обмежені %1- %9), просто не забудьте обернути аргументи перевернутими комами, або використати 8.3 іменування, або перетягнути їх (це автоматично робить будь-що з наведеного вище).
це дозволяє виконувати такі команди:
⓵ identifier.cmd c:\windows
і отримати
існують
- це каталог
зроблено
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
і отримати
існують
це файл
зроблено
⓷ та кілька аргументів (звичайно, це вся справа ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
і отримати
існують
- це каталог
існують
це файл
існують
це файл
не існує
зроблено.
природно, це може бути набагато складніше,
але приємні приклади завжди повинні бути простими та мінімальними. :)
Сподіваюся, це комусь допоможе :)
опубліковано тут: CMD Ninja - Обробка необмежених аргументів, виявлення, чи існує у файловій системі, виявлення файлу чи каталогу
і ось робочий приклад, який бере будь-яку кількість файлів APK (програми для Android) та встановлює їх на вашому пристрої через консоль налагодження (ADB.exe):
Зробіть попереднє повідомлення масовим інсталятором APK, який не використовує синтаксис ADB Install-Multi