(Mal wieder) Suchen und Ersetzen mittels Batch-Datei
Hi!
Vorweg:
Die SuFu hat doch schon was gebracht, aber wirklich weiterhelfen konnten mir die vielen Beiträge irgendwie leider nicht.
Verzeiht es mir wenn mich mich machnmal villeicht etwas "dumm" anstellen, schließlich bin ich neu hier
Also gut, kommen wir zu meinem Problem:
Man nehme an, ich hätte eine Textdatei "test.txt" mit folgendem Inhalt:
a123
bcde
fgh1
Die zweite Zeile (Also bcde) soll durch zyxu ersetzt werden. Ich möchte, dass das Script also nach bcde sucht und anstatt dessen zyxu reinschreibt. Das ganze soll er dann speicher - und zwar unter dem selben Dateinamen !
Der Rest der Textdatei sollt möglichst völlig unberührt von den Änderungen bleiben.
Das ganze soll ein reines Batch-Script sein und auch bitte funktionieren
Wenn es überhaupt geht, dann auch gerne ein Shell .sh für Linux & Co. ; aber das Batch hat Vorrang.
Ich danke schonmal für's durchlesen!
Mfg,
Michael
Vorweg:
Die SuFu hat doch schon was gebracht, aber wirklich weiterhelfen konnten mir die vielen Beiträge irgendwie leider nicht.
Verzeiht es mir wenn mich mich machnmal villeicht etwas "dumm" anstellen, schließlich bin ich neu hier
Also gut, kommen wir zu meinem Problem:
Man nehme an, ich hätte eine Textdatei "test.txt" mit folgendem Inhalt:
a123
bcde
fgh1
Die zweite Zeile (Also bcde) soll durch zyxu ersetzt werden. Ich möchte, dass das Script also nach bcde sucht und anstatt dessen zyxu reinschreibt. Das ganze soll er dann speicher - und zwar unter dem selben Dateinamen !
Der Rest der Textdatei sollt möglichst völlig unberührt von den Änderungen bleiben.
Das ganze soll ein reines Batch-Script sein und auch bitte funktionieren
Wenn es überhaupt geht, dann auch gerne ein Shell .sh für Linux & Co. ; aber das Batch hat Vorrang.
Ich danke schonmal für's durchlesen!
Mfg,
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90771
Url: https://administrator.de/contentid/90771
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
15 Kommentare
Neuester Kommentar
linux.sh:
Windows.cmd
change.cmd Hi's Hallo
echo "Ersetzen von"
read old_value
echo "Ersetzen mit"
read new_value
echo $old_value
echo $new_value
exit 0
Windows.cmd
change.cmd Hi's Hallo
echo %1
echo %2
Moin iceteea,
willkommen im Forum.
"Text durch Eingabe ersetzen" im Windows-Batch. Ja, geht auch.
dazu in dem ersten Schnipsel / ersten angegebenen Link mit "SET /P var=gib ma altenText ein:" arbeiten statt einem "SET var=alterText"
Aber: diese Mimik ist nur dann sinnvoll, wenn Du auch ZEILENweise ersetzt.
Für ZEICHENweise Ersetzung (alle Worte "alterText" durch "irgendwas" ersetzen) ist VBSkript geeigneter.
Oder eben ein Zusammenspiel Batch (für die Benutzereingaben) und ein "sed"-Utility.
Hast Du immer nur komplette Zeilen zu ersetzen?
Grüße
Biber
willkommen im Forum.
"Text durch Eingabe ersetzen" im Windows-Batch. Ja, geht auch.
dazu in dem ersten Schnipsel / ersten angegebenen Link mit "SET /P var=gib ma altenText ein:" arbeiten statt einem "SET var=alterText"
Aber: diese Mimik ist nur dann sinnvoll, wenn Du auch ZEILENweise ersetzt.
Für ZEICHENweise Ersetzung (alle Worte "alterText" durch "irgendwas" ersetzen) ist VBSkript geeigneter.
Oder eben ein Zusammenspiel Batch (für die Benutzereingaben) und ein "sed"-Utility.
Hast Du immer nur komplette Zeilen zu ersetzen?
Grüße
Biber
Moin iceteea,
in diesem Fall ist es ja nur eine Änderung der Rahmenbedingungen, des Algorithmus.
Vorher: Suche "AlteKomplettzeile" , ersetze durch "neueKomplettzeile"
[wobei das Gleichheitszeichen und evtl. auch vorhandene/nicht vorhandene Leerzeichen vor/nach dem "=" Komplikationen verursachen können.]
Ändere die Mimik auf:
Wenn Zeile mit "safe_mode" beginnt, dann schreibe "safe_mode = Off"
Egal, ob da jetzt "safe_mode =On" oder "SaFe_Mode = Off" oder "Safe_mode ==Tippfehler" drinsteht.
Grüße
Biber
in diesem Fall ist es ja nur eine Änderung der Rahmenbedingungen, des Algorithmus.
Vorher: Suche "AlteKomplettzeile" , ersetze durch "neueKomplettzeile"
[wobei das Gleichheitszeichen und evtl. auch vorhandene/nicht vorhandene Leerzeichen vor/nach dem "=" Komplikationen verursachen können.]
Ändere die Mimik auf:
Wenn Zeile mit "safe_mode" beginnt, dann schreibe "safe_mode = Off"
Egal, ob da jetzt "safe_mode =On" oder "SaFe_Mode = Off" oder "Safe_mode ==Tippfehler" drinsteht.
Grüße
Biber
Moin Iceteea,
ungetestet und einfach vor mich hingeschrieben so:
Grüße
Biber
[Edit] Ein paar korrekturen reingeflickt. [/Edit]
[Edit] Und Jahre später noch mal ein fehlendes Anführungszeichen nachgetragen am 23.6.2011. Thx@Skyemugen für den Hinweis.[/Edit]
ungetestet und einfach vor mich hingeschrieben so:
:: ----snipp ganzeZeileErsetzen.cmd
@echo off & setlocal
Set /p "Suchwort=Suchwort eingeben: "
Set /p "ErsatzZeile=ErsatzZeile eingeben: "
If exist %temp%\new.txt del %temp%\new.txt
For /F "delims=" %%i in (D:\eine\php.ini) do (
Echo %%i|Findstr /b "%Suchwort%" >nul
If Errorlevel 1 (
echo %%i>>%temp%\new.txt
) Else (
echo %Ersatzzeile%>>%temp%\new.txt
))
move %temp%\new.txt D:\eine\php.ini
Grüße
Biber
[Edit] Ein paar korrekturen reingeflickt. [/Edit]
[Edit] Und Jahre später noch mal ein fehlendes Anführungszeichen nachgetragen am 23.6.2011. Thx@Skyemugen für den Hinweis.[/Edit]
gib mal
bzw: Zeile 2
type %temp%\new.txt ein?
bzw: Zeile 2
@echo off & setlocal
ändern insetlocal
(zum Test)