Jak powstrzymać ekspansję zmiennych środowiskowych w DOS i Windows CMD?
Jest to uproszczony przykład ze zmodyfikowanymi nazwami zmiennych tego, co chcę zrobić. Dla uproszczenia pokazuję wersję wiersza poleceń, a nie wersję pliku bat.
Robię co następuje.
> echo %foo%
%foo%
Jeśli jednak foo jest poprawną zmienną środowiskową, nie otrzymuję żądanego wyjścia (%foo%
) ze względu na rozszerzenie zmiennej środowiskowej.
> set foo=bar
> echo %foo%
> echo %%foo%%
bar
%bar%
Teraz mam hak do zrobienia (następujący przykład), ale zastanawiałem się, czy istnieje lepszy sposób na wyjście a%
znak lub w celu stłumienia rozszerzenia zmiennej środowiskowej.
> set foo=bar
> set percent=%
> echo %percent%foo%percent%
%foo%
Ponadto, jeśli wymagane rozwiązanie różni się w pliku bat (np%%
zamiast%
lub%1%
zamiast%1
) proszę daj mi znać.
Mój rzeczywisty przypadek użycia znajduje się w pliku bat zSETX
aby ustawić globalne zmienne środowiskowe, które opierają się na innej zmiennej środowiskowej, aby były w nich rozwijane, ale jestem ciekawy, jak rozwinąć w DOS lub cmd.