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

Frage Entwicklung Batch & Shell

GELÖST

Suchen und Ersetzen, Kommentare und Leerzeilen behalten

Mitglied: M3talH3ad

M3talH3ad (Level 1) - Jetzt verbinden

12.06.2014 um 14:13 Uhr, 1056 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
Linux Tools
Bash: suchen und ersetzen
Frage von SIPSIPLinux Tools14 Kommentare

Hallo zusammen Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\ Nun habe ich dieses kleine Script erstellt, ...

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
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 ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen8 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...