Bardziej zaawansowany przykład:
⍟ nieograniczone argumenty.
⍟ istnieją w systemie plików (albo filelub 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- stworzy ś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, shifta 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