Wir können Zeichenfolgen in einer Batchdatei mit dem folgenden Befehl ersetzen
set str="jump over the chair"
set str=%str:chair=table%
Diese Zeilen funktionieren einwandfrei und ändern die Zeichenfolge "Über den Stuhl springen" in "Über den Tisch springen". Jetzt möchte ich das Wort "Stuhl" in der Zeichenfolge durch eine Variable ersetzen und weiß nicht, wie es geht.
set word=table
set str="jump over the chair"
??
Irgendwelche Ideen?
command-line
batch-file
Faisal
quelle
quelle
Antworten:
Sie können! Verwenden, aber Sie müssen den Schalter ENABLEDELAYEDEXPANSION eingestellt haben.
quelle
str
sich um eine verzögerte Expansion handelt?set str=!str:chair=!word!!
funktioniert nicht richtig."jump over the !word!"
.Sie können den folgenden kleinen Trick verwenden:
Das
call
dort bewirkt eine weitere Schicht variabler Expansion, was es notwendig macht, die ursprünglichen%
Zeichen zu zitieren , aber am Ende klappt alles.quelle
%"jump over the "word%%%
. Beachten Sie jedoch, dass Code in Batchdateien und in der Befehlszeile zu unterschiedlichen Ergebnissen führen kann.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%'
Ich konnte Joeys Antwort verwenden, um eine Funktion zu erstellen:
Verwenden Sie es als:
Und diese Funktionen am Ende Ihrer Batch-Datei.
Und denken Sie daran, dass Sie "SETLOCAL ENABLEDELAYEDEXPANSION" oben in Ihre Batch-Datei einfügen MÜSSEN, sonst funktioniert nichts davon ordnungsgemäß.
quelle
Das funktioniert gut
quelle
chair
undtable
fügt es hinzu, aber es tauscht die beiden Wörter nicht aus. Versuchen Sie, das Wortover
durch zu ersetzen,under
und Sie erhaltenjump the chairunder