Próbuję zdefiniować i użyć zmiennej w pliku wsadowym. Wygląda na to, że powinno być proste:
@echo off
set location = "bob"
echo We're working with "%location%"
Wynik, który otrzymuję, jest następujący:
We're working with ""
Co tu się dzieje? Dlaczego moja zmienna nie jest wyświetlana?
batch-file
cmd
environment-variables
Jamie Dixon
źródło
źródło
=
jest interpretowana jako część nazwy, to do zmiennej nie można się odwoływać jako%location%
, należy do niej odwoływać się jako%location %
. Czy to literówka?alias x = y
in * nix land?x = y
?Przestrzenie są znaczące. Utworzyłeś zmienną o nazwie
'location '
o wartości' "bob"'
. Uwaga - dodano pojedyncze cudzysłowy, aby pokazać lokalizację przestrzeni.Jeśli chcesz cytować w swojej wartości, twój kod powinien wyglądać
Jeśli nie chcesz cytatów, twój kod powinien wyglądać
Lub jeszcze lepiej
Ostatnia składnia zapobiega wprowadzaniu wartości przez przypadkowe spacje końcowe, a także chroni przed znakami specjalnymi, takimi jak
&
|
itp.źródło
%
i być może,!
jeśli opóźnione rozszerzenie jest włączone. Ale jeśli wartość nie zawiera cytaty, trzeba martwić podczas ucieczki znaki trucizny jak|
,&
itpWejście
location.bat
wynik
(błędy, które popełniłeś:
space
i" "
)źródło
set /p
monituje użytkownika i zapisuje odpowiedź w określonej zmiennej. np.set /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"
jest niepoprawna, tworzy zmienną o nazwielocation"
(z końcowym cytatem!). Powinno byćset /p location="bob"
. Ale nawet wtedy nie pasuje już do pytania