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 Suchen und Ersetzen, Kommentare und Leerzeilen behalten

Mitglied: M3talH3ad

M3talH3ad (Level 1) - Jetzt verbinden

12.06.2014 um 14:13 Uhr, 1089 Aufrufe, 4 Kommentare

Hallo zusammen,

für viele hier bestimmt ein leichtes Spiel:

Ich möchte in einer ini-Datei per Batch suchen und ersetzen.
Das funktioniert soweit auch, nur werden mir sämtliche Kommentare (angeführt mit Semikolon) und Leerzeilen aus der Quelldatei entfernt. Gibt es einen Weg, das zu unterbinden?

Mittels SuFu bin ich soweit gekommen:
01.
@echo off & setlocal 
02.
Set Suchwort=123 
03.
Set Ersatz=456 
04.
Set Datei=C:\123.ini 
05.
 
06.
If exist %temp%\new.txt del %temp%\new.txt 
07.
 
08.
For /F  "delims=" %%i in (%Datei%) do ( 
09.
   Echo %%i|Findstr /B "%Suchwort%" >nul 
10.
   If Errorlevel 1 (  
11.
          echo %%i>>%temp%\new.txt 
12.
	  ) Else ( 
13.
          echo %Ersatz%>>%temp%\new.txt 
14.
)) 
15.
move %temp%\new.txt %Datei%
Vielen Dank im Voraus!
Mitglied: bastla
LÖSUNG 12.06.2014, aktualisiert um 22:18 Uhr
Hallo M3talH3ad und willkommen im Forum!

Versuch's mal so:
01.
@echo off & setlocal 
02.
set "Suchwort=123" 
03.
set "Ersatz=456" 
04.
set "Datei=C:\123.ini" 
05.
 
06.
set "TempDat=%temp%\new.txt" 
07.
(for /f  "delims=" %%i in ('findstr /n "^" "%Datei%"') do ( 
08.
    set "Zeile=%%i" 
09.
    setlocal enabledelayedexpansion 
10.
    echo(!Zeile:*:=!|findstr /b "%Suchwort%">nul && ( 
11.
        echo %Ersatz% 
12.
    ) || ( 
13.
        echo(!Zeile:*:=! 
14.
15.
    endlocal 
16.
))>%TempDat% 
17.
move %TempDat% "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: M3talH3ad
12.06.2014 um 21:41 Uhr
Hi bastla!

das scheint zu funktionieren. Vielen Dank!
Wofür ist das "^" in Zeile 7 gut und was bewirkt !Zeile:*:=! genau?
Tue mich gerade schwer damit, das zu verstehen
Bitte warten ..
Mitglied: bastla
12.06.2014 um 21:58 Uhr
Hallo M3talH3ad!
Wofür ist das "^" in Zeile 7 gut
Das steht für "Zeilenanfang" - und den hat jede Zeile, womit sichergestellt ist, dass alle Zeilen verarbeitet werden.
was bewirkt !Zeile:*:=! genau?
Die Ersetzung des Teils am Anfang der Variablen %Zeile% (bzw, wegen "delayedExpansion", !Zeile!) bis zum ersten ":" (inklusive) durch Nichts - damit wird die Zeilennummer, die "findstr /n" erstellt, abgeschnitten; sollte eine Zeile mit ":" beginnen, wird so nur der erste ":" (stammt von "findstr") entfernt und nicht, wie bei der Alternative
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%"') do echo %%j
auch der ursprünglich vorhandene ":" eliminiert.

Zum besseren Verständnis (siehe auch set /? bei "Ersetzen von Umgebungsvariablen"): Wenn in der Datei in Zeile 3 stünde
Wert1=5
enthielte die Variable Zeile zunächst
3:Wert1=5
Ein
echo %Zeile:*:=%
würde dann "3:" entfernen, sodass wieder "Wert=5" ausgegeben würde. Der Sinn der ganzen Aktion ist dabei nur das gewünschte Erhalten der Leerzeilen, da die Nummerierung dafür sorgt, dass in der Schleife jede Zeile verarbeitet wird (es ist ja eine Leerzeile wegen der Nummer zunächst noch nicht "leer", sondern wird es erst wieder durch das Entfernen von Zeilnennummer und ":") ...

Grüße
bastla
Bitte warten ..
Mitglied: M3talH3ad
12.06.2014 um 22:17 Uhr
Vielen Dank für die ausführliche Erklärung.
Hast mir echt weiter geholfen!

Schönen Abend noch!

LG,
M3talH3ad
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

CMD: Suchen, Ersetzen und Hochzählen

gelöst Frage von ralfkauskBatch & Shell3 Kommentare

Hallo zusammen Ich habe folgendes Problem In einer Datei muss ein Wert gefunden, auf Korrektheit geprüft und evtl. ersetzt/geändert ...

Batch & Shell

Regwert suchen und ersetzen?

Frage von busteronBatch & Shell7 Kommentare

Hallo alle zusammen, ich hab mal wieder ne Frage! Wie kann ich die komplette Registry über eine Batch 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

Suchen und Ersetzen mit Sonderzeichen

gelöst Frage von snowdreamBatch & Shell6 Kommentare

Hallo zusammen, ich brauche mal wieder eure Hilfe. Ich hab hier im Forum schon einiges gelernt und auch schon ...

Neue Wissensbeiträge
Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 10 StundenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 16 StundenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 1 TagMicrosoft Office4 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

LAN, WAN, Wireless
OpenVPN Client Fehlermeldungen
Frage von chris84LAN, WAN, Wireless12 Kommentare

Hallo Zusammen, wir nutzen seit kurzem einen neuen Router und den OpenVPN Client. Die VPN Verbindung klappt; allerdings kommen ...