Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst (Mal wieder) Suchen und Ersetzen mittels Batch-Datei

Mitglied: iceteea

iceteea (Level 1) - Jetzt verbinden

27.06.2008, aktualisiert 18.10.2012, 37594 Aufrufe, 15 Kommentare

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
Mitglied: 60730
27.06.2008, aktualisiert 18.10.2012
Hallo und willkommen.

Bastla /?
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 13:18 Uhr
Cool, Danke!!!
Und gibt es da auch noch eine Lösung mittels Shell-Script ?
Bitte warten ..
Mitglied: 60730
27.06.2008 um 13:25 Uhr
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 16:19 Uhr
Alles klar. DANKE !
(Die Seite hat er mir nicht gefunden - warscheihnlich falsches Stichwort ^^)

Geht es auch noch dass er den Text durch eine Eingabe ersetzt ?!
Also z.B. das "Terminal" erscheint und ich gebe jetzt Hallo ein,
dass er dann z.B. alle Hi's durch Hallo ersetzt ?! (Mit Batch)
Bitte warten ..
Mitglied: 60730
27.06.2008 um 16:36 Uhr
linux.sh:

01.
echo "Ersetzen von" 
02.
read old_value 
03.
echo "Ersetzen mit" 
04.
read new_value 
05.
echo $old_value 
06.
echo $new_value 
07.
exit 0
Windows.cmd

change.cmd Hi's Hallo

01.
echo %1 
02.
echo %2
Bitte warten ..
Mitglied: Biber
27.06.2008 um 16:41 Uhr
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
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 16:51 Uhr
Dann mache ich mal klar Tisch

Ich möchte mir eine Art kleine Hilfsprogramm erstellen, mit dem ich eine php.ini bearbeiten kann. D.h. : Ich muss tatsächlich ganze Zeilen ersetzen

Ich habe noch ein Problem mit dem ersten Script (ist mir jetzt erst aufgefallen):

Ich habe jetzt z.B. eine Zeile
safe_mode = On

Per Batch soll die dann z.B. auf
safe_mode = Off

geändert werden. Das Ergebnis aber sieht so aus:
Off=safe_mode = On= Off


Das was ihn stört ist meiner Meinung nach das "="-Zeichen. Gibt es noch einen anderen Weg ?!
Ich bin für alles offen - es sollte aber nur nicht allzu kompliziert sein
Bitte warten ..
Mitglied: Biber
27.06.2008 um 17:12 Uhr
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
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 17:16 Uhr
Ok - Zeile 5f meines ersten Beitrags;
Aber wie mach ich das ?
Bitte warten ..
Mitglied: Biber
27.06.2008 um 17:29 Uhr
Moin Iceteea,

ungetestet und einfach vor mich hingeschrieben so:
01.
:: ----snipp ganzeZeileErsetzen.cmd 
02.
@echo off & setlocal 
03.
Set /p "Suchwort=Suchwort eingeben: " 
04.
Set /p "ErsatzZeile=ErsatzZeile eingeben: " 
05.
If exist %temp%\new.txt del %temp%\new.txt 
06.
 
07.
For /F "delims=" %%i in (D:\eine\php.ini) do ( 
08.
   Echo %%i|Findstr /b "%Suchwort%" >nul 
09.
   If Errorlevel 1 (  
10.
          echo %%i>>%temp%\new.txt 
11.
   ) Else ( 
12.
          echo %Ersatzzeile%>>%temp%\new.txt 
13.
)) 
14.
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]
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 17:40 Uhr
Ahh, macht er nicht. Es funktioniert tadellos, aber die Datei wird nicht verändert.
Bitte warten ..
Mitglied: 60730
27.06.2008 um 17:43 Uhr
gib mal
type %temp%\new.txt ein?

bzw: Zeile 2
@echo off & setlocal
ändern in
setlocal
(zum Test)
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 17:47 Uhr
Noch immer nichts. Gibt es alternative Script-Sprachen ?!
(Also jetzt blos kein C++ oder so, ich dachte da ehen an z.B. Php selbst, Javascript oder Java, etc...)

MOMENT:

@echo off & setlocal enabledelayedexpansion
set "Datei=F:\test.txt"
set "Von=hallo"
SET /P var=hierdeintextetc:"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%"
move /y "%t%" "%Datei%"


Das ist mein aktueller Code,
alle Hallo's werden jetzt durch ECHO ist ausgeschaltet (OFF).
ersetzt. Sagt mir aber leider nichts. Wo liegt der Fehler ?
Bitte warten ..
Mitglied: Biber
27.06.2008 um 18:16 Uhr
Moin iceteea,

in meinem Schnipsel fehlt(e) jedenfalls eine schließende runde Klammer.
Habe ich oben angepasst. Und zwei andere Korrekturen auch.

Versuch es noch mal bitte.

Grüße
Biber
Bitte warten ..
Mitglied: iceteea
27.06.2008 um 18:25 Uhr
PERFEKT ! Danke !!!
Gibt es noch einen weg das Suchwort nicht manuell einzugeben ?! (Also quasie "vordefiniert")

EDIT: Ahh, *Stirn klatsch* einfach das /p entfernen !

Frage: Kann ich dein Script auch benutzen um mehrere Dateien gleichzeitig zu bearbeiten ? Was muss ich eingeben ?!

EDIT2:

Unten drann einfach:

For /F "delims=" %%i in (Datei2.txt) 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 Datei2.txt

Anhängen (Datei2.txt ist natürlich ein Platzhalter für eure Datei)

[GELÖST]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch: Dateien innerhalb einer Ordnerstruktur nach einem Sting suchen und ersetzen

Frage von yousaintBatch & Shell2 Kommentare

Hallo zusammen, wie oben erwähnt, würde ich gerne innerhalb einer Ordnerstruktur (Dateien innerhalb aller Unterordner) in den Dateien nach ...

Windows Tools

Suche Programm zum dateien suchen und Ersetzen mit Wildcat Suche

gelöst Frage von sfera-haizaWindows Tools5 Kommentare

Grüßt euch, ich nutze zzT. das Programm InfoRapid Suchen & Ersetzen um HTML / PHP Dateien zu durchsuchen bzw. ...

Batch & Shell

Zeile eine Datei per batch ersetzen

Frage von duckknightBatch & Shell2 Kommentare

Hallo die Damen und Herren, ich bin nun bei allen Suchanfragen immer wieder hier gelandet, habe aber das was ...

Batch & Shell

Neueste Datei mit Batch suchen

gelöst Frage von thilo-55Batch & Shell4 Kommentare

Ein herzliches Hallo an die Teilnehmer des Forums. Leider komme ich mit meinen batch/dos-Kenntnissen nicht mehr weiter. Evtl. kann ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 6 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 TagSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung26 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...

Windows 10
Unter Windows 10 Home 64Bit (1709) kommt Fehler beim Aufruf von verschiedenen Systemprogrammen wie z.B. Gerätemanager
Frage von bitshopWindows 1017 Kommentare

Hallo, beim meinem Onkel haben wir seit längerem das Problem, dass z.B. beim Aufruf des Gerätemanagers eine Fehlermeldung kommt ...