Możemy zamienić ciągi znaków w pliku wsadowym za pomocą następującego polecenia
set str="jump over the chair"
set str=%str:chair=table%
Te linie działają dobrze i zmieniają sznurek „przeskocz przez krzesło” na „przeskocz przez stół”. Teraz chcę zamienić słowo „krzesło” w ciągu na jakąś zmienną i nie wiem, jak to zrobić.
set word=table
set str="jump over the chair"
??
Jakieś pomysły?
command-line
batch-file
Faisal
źródło
źródło
Odpowiedzi:
Możesz użyć!, Ale musisz mieć ustawiony przełącznik ENABLEDELAYEDEXPANSION.
źródło
str
sam pochodzi z opóźnionej ekspansji?set str=!str:chair=!word!!
nie działa poprawnie."jump over the !word!"
.Możesz użyć następującej małej sztuczki:
call
Nie powoduje kolejną warstwę zmiennej ekspansji, co konieczne, aby zacytować oryginalne%
znaki, ale to wszystko działa w końcu.źródło
%"jump over the "word%%%
. Należy tylko pamiętać, że kod w plikach wsadowych iw wierszu poleceń może dawać różne wyniki.set word=table
set str="jump over the chair"
call set str=%%str:chair=%word%%%
echo %str%
set word1=chair
set word2=desk
set str="jump over the chair"
call set str=%%str:%word1%=%word2%%%
echo %str%'
Udało mi się użyć odpowiedzi Joey'a do stworzenia funkcji:
Użyj go jako:
I te funkcje na dole pliku wsadowego.
I pamiętaj, że MUSISZ dodać „SETLOCAL ENABLEDELAYEDEXPANSION” na początku pliku wsadowego, inaczej nic z tego nie będzie działać poprawnie.
źródło
To działa dobrze
źródło
chair
i dodaje jetable
, ale nie zamienia dwóch słów. Spróbuj zamienić słowoover
zunder
i maszjump the chairunder