Nazwy zmiennych środowiskowych zdefiniowanych przez użytkownika systemu Windows mogą zawierać dowolny znak z wyjątkiem =
.Jaka składnia sprawdzi, czy zdefiniowana jest nazwa zmiennej zawierająca spacje?
Znaki specjalne można wstawiać po nich. Prostszą metodą jest po prostu ujęcie całego wyrażenia SET w cudzysłowach. Na przykład:
set "A weird & "complex" variable=My value"
set A weird ^& "complex" variable=My value
Oba wyrażenia powyżej dają taki sam wynik. Nazwa zmiennej jest A weird & "complex" variable
a wartość My value
jeśli określona konstrukcja służy do sprawdzenia, czy zmienna została zdefiniowana. Cytaty nie działają dla tego testu, znaki specjalne w nazwie (łącznie z cudzysłowami) muszą zostać usunięte.
set "A&B=value"
if defined A^&B echo This works
if defined "A&B" echo This does not work
Powyższy test ucieczki działa dobrze. Przytoczony test nie działa
Ale jak mogę sprawdzić, czy istnieje zmienna zawierająca spacje?
set "A B=value"
if defined A^ B echo this does not work!
Wydaje się, że powyższe powinny działać, ale tak nie jest!
Poszukuję odpowiedzi, która NIE obejmuje rozszerzania zmiennej za pomocą% A B% lub! A B!
FOR /! Opóźnić! rozwiązanie nie było oczywiste, kiedy potrzebowałem snu. Myślałem o tym, kiedy się obudziłem, ale już napisałeś znakomitą odpowiedź! :) – dbenham
Twoja * analiza escape2 * jest bardzo interesująca. Jeszcze jedna okazja, aby wprowadzić komentarz do oświadczenia – dbenham