Stworzyłem skrypt wsadowy, który zastępuje ciągi znaków w określonym pliku tekstowym. W moim pliku ciąg OutDir=bin
powinien zostać zastąpiony jako, OutDir=Build
ale otrzymuje dane wyjściowe jako bin=OutDir=Build=bin
. Jak mogę uciec =
in OutDir=bin
tak, że ciąg nie staje się nieczytelny? Próbowałem, OutDir^=
ale użycie marchewki też nie działa.
Oto mój obecny skrypt:
@echo off
setlocal enableextensions disabledelayedexpansion
set search=OutDir=bin
set replace=OutDir=Build
set textFile=%DOCUMENT%.txt
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
Próbowałem zmienić znajdź i zamień zmienne, aby skompensować =
ciąg, który zastępuję, ale żadna nie działała:
set search= "OutDir=bin"
set replace= "OutDir=Build"
set search="OutDir=bin"
set replace="OutDir=Build"
set "search=OutDir=bin"
set "replace=OutDir=Build"
"set search=OutDir=bin"
"set replace=OutDir=Build"
windows
batch-file
string
Pan Mendelli
źródło
źródło
Odpowiedzi:
Zastępowanie równego symbolu
=
w ciągu ciągiem za pomocą programu PowerShellPo przetestowaniu, a następnie badaniu, natrafiłem na tę odpowiedź na StackOverflow, która następnie wskazała również ten wątek i posty na DosTips i zastąpienie go
=
czystą partią nie jest łatwe.Kiedy napotykam problemy ze skryptami wsadowymi, które wymagają mnóstwa skomplikowanej logiki wsadowej lub po prostu nie mogę dowiedzieć się, jak sprawić, by działało łatwo, zwykle próbuję włączyć PowerShell do miksu, ponieważ jest on natywny dla systemu Windows i może być znacznie bardziej niezawodny niż partia bez złożonej logiki.
Scenariusz
Wynik wyjściowy
Dalsze zasoby
źródło