Wie kann ich nach "//packages/thirdparty/release/main.txt #10" suchen und #10 durch #15 ersetzen (VARIABLE="#15" festlegen) mithilfe von Batch-Befehlen und auchignorierendLeerzeichen. #10 kann alles sein,nehmen wir an, #XXX. Ein Beispiel in der Befehlszeile wird bevorzugt.
testlog.txt
//packages/thirdparty/release/config.txt #8
//packages/thirdparty/release/config2.txt #3
//packages/thirdparty/release/config1.txt #4
//packages/thirdparty/release/main.txt #10
Das ist mein Versuch
@ECHO OFF
set $FindStr=//packages/thirdparty/release/main.txt#10
set $ReplString=//packages/thirdparty/release/main.txt#15
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('type testlog.txt') do (
set $Ver=%%a
set $Ver=!$Ver: =!
If /i !$Ver!==%$FindStr% set $Ver=%$ReplString%
echo !$Ver! ) >> testlog.txt
Antwort1
Sie können dieREPL.BATSkript, um dies zu tun. Speichern Sie es einfach und führen Sie es wie folgt aus:
type testlog.txt|repl.bat "#\d\d?$" "#15"
Wenn Sie nur eine bestimmte Nummer ersetzen möchten, ist lediglich eine kleine Änderung erforderlich:
type testlog.txt|repl.bat "#10$" "#15"
Wenn Sie noch mehr Kontrolle darüber haben möchten, wie Dinge ersetzt werden, können Sie dafür ein anderes Skript verwenden:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
COPY /A testlog.txt textlog.out.txt >nul
SET VARIABLE=0
FOR %%S IN ( 1 3 4 8 10 20 ) DO (
SET /A VARIABLE=!VARIABLE!+1
COPY /A textlog.out.txt textlog.tmp.txt >nul
TYPE textlog.tmp.txt|repl.bat "#%%S$" "#!VARIABLE!" > textlog.out.txt
)
DEL textlog.tmp.txt
ENDLOCAL