Bardziej zaawansowany przykład:
⍟ nieograniczone argumenty.
⍟ istnieją w systemie plików (albo file
lub directory
?) Albo są generyczne string
.
⍟ określ, czy jest to plik
⍟ określić jest katalogiem
⍟ bez rozszerzeń, działałoby w starszych skryptach!
⍟ minimalny kod ☺
@echo off
:pętla
:: -------------------------- ma argument?
if ["% ~ 1"] == [""] (
echo zrobione.
koniec
)
:: -------------------------- istnieje argument?
jeśli nie istnieje% ~ s1 (
echo nie istnieje
) else (
echo istnieje
jeśli istnieje% ~ s1 \ NUL (
echo to katalog
) else (
echo to plik
)
)
:: --------------------------
Zmiana
goto loop
:koniec
pauza
✨ inne rzeczy…
■ w %~1
- ~
usuwa wszelkie opakowania "
lub '
.
■ in %~s1
- s
tworzy ścieżkę DOS 8.3 naming
, co jest fajną sztuczką pozwalającą uniknąć spacji w nazwie pliku podczas sprawdzania rzeczy (w ten sposób nie ma potrzeby zawijania zasobu większą liczbą "
s.
■ ["%~1"]==[""]
„nie można być pewnym”, jeśli argument jest plikiem / katalogiem lub tylko ogólnym ciągiem znaków, więc zamiast tego wyrażenie używa nawiasów i oryginalnego niezmodyfikowanego %1
(tylko bez "
zawijania, jeśli istnieje ..)
jeśli nie było argumentów lub jeśli użyliśmy, shift
a wskaźnik listy argumentów przekroczył ostatni, wyrażenie zostanie obliczone na [""]==[""]
.
■ jest to tak szczegółowe, jak możesz być bez używania większej liczby sztuczek (działałoby nawet w skryptach wsadowych systemu Windows-95 ...)
■ przykłady wykonania
zapisz to jako identifier.cmd
może zidentyfikować nieograniczoną liczbę argumentów (zwykle jesteś ograniczony do %1
- %9
), po prostu pamiętaj, aby zawijać argumenty cudzysłowami lub użyć nazewnictwa 8.3, lub przeciągnij i upuść je (automatycznie robi jedno z powyższych).
pozwala to na uruchamianie następujących poleceń:
⓵ identifier.cmd c:\windows
i dostać
istnieć
jest katalogiem
Gotowe
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
i dostać
istnieć
jest plikiem
Gotowe
⓷ i wiele argumentów (oczywiście to cała sprawa ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
i dostać
istnieć
jest katalogiem
istnieć
jest plikiem
istnieć
jest plikiem
nie istnieje
Gotowe.
naturalnie może być dużo bardziej złożone,
ale ładne przykłady zawsze powinny być proste i minimalne. :)
Mam nadzieję, że to pomoże każdemu :)
opublikowane tutaj: CMD Ninja - nieograniczone przetwarzanie argumentów, identyfikacja, czy istnieją w systemie plików, identyfikacja, czy plik lub katalog
a oto działający przykład, który pobiera dowolną ilość plików APK (aplikacji na Androida) i instaluje je na urządzeniu za pomocą konsoli debugowania (ADB.exe):
Utwórz poprzedni post Masowy instalator APK, który nie używa składni ADB Install-Multi