2017-07-10 2 views
0

Ich versuche gerade ein Skript zu machen, um einen Satz in Dateien zu finden und diese Zeile durch eine andere zu ersetzen. Ich habe dies bereits gemacht:Batch-Skript, um Wörter in Dateien zu suchen und sie zu ersetzen

@echo off 
setlocal enableextensions disabledelayedexpansion 

set "[email protected]({ RuntimeExceptionInterceptor.class })" 
set "[email protected]({ RuntimeExceptionInterceptor.class, ReportInterceptor.class })" 

set "textFile=test2.txt" 

for /f %%i %%f in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
    set "line=%%i %%f" 
    setlocal enabledelayedexpansion 
    >>"%textFile%" echo(!line:%search%=%replace%! 
    endlocal 
) 

Aber es funktioniert nicht, ist dieses Skript nicht in der Lage meine erste Linie durch die ersetzen, die ich will, können Sie mir bitte helfen :)?

Antwort

0

Es gab einige erros im Code:

  • die für nur eine Variable ausgedrückt, über "tokens=" können Sie mehr definieren, wenn die Eingabe an den mit "delims=" Siehe help for
  • aufgeführten Zeichen aufteilen können Sie nicht schreibe zum selben, während du es noch liest.
  • Die schließende Klammer in Ihren Such- und Ersetzungszeichenfolgen bewirkt, dass die for-Schleife bricht - Sie müssen sie mit einem ^ zu entkommen.

@echo off 
setlocal enableextensions Disabledelayedexpansion 

:: take care the closing parenthesis has to be escaped with a caret 
set "[email protected]({ RuntimeExceptionInterceptor.class }^)" 
set "[email protected]({ RuntimeExceptionInterceptor.class, ReportInterceptor.class }^)" 

set "textFile=test2.txt" 
set "text_new=test2.new" 

(for /f "Delims=" %%i in (
    'type "%textFile%" ' 
) do (
    set "line=%%i" 
    Call echo:%%line:%search%=%replace%%% 
) 
) > "%text_new%" 
type "%text_new%" 

die alte Datei mit der neuen ersetzt wird für Sie nach links.

1

warum nicht den sed Befehl mit dem -i Flag verwenden? Das klingt nach dem, was das Werkzeug für

0

ist Es ist einfacher, das Problem mit einem anderen Ansatz als einer Batchdatei zu beheben. Vermutlich entwickeln Sie mit einer Java-IDE. Verwenden Sie seine globale Ersetzungsmöglichkeit; z.B. Verwenden Sie in IntelliJ IDEA die Option "In Pfad ersetzen ...".

Verwandte Themen