Більш просунутий приклад:
Необмежена кількість аргументів.
⍟ існують у файловій системі ( 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