Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Beliebigen Text zwischen bestimmten ausdrücken per Batch oder Skript aus ini löschen

Frage Entwicklung Batch & Shell

Mitglied: Blackhawk386

Blackhawk386 (Level 1) - Jetzt verbinden

28.01.2013 um 07:43 Uhr, 2990 Aufrufe, 7 Kommentare

Hi,

ich möchte aus einer ini-Datei einen beliebigen Text zwischen zwei bestimmten ausdrücken, bzw. bis zu einen bestimmten Zeichen löschen. Das ganze soll per Skript oder Batch passieren.

Die ini baut sich wie folgt auf:

...
[Terminplaner]
beliebiger zu löschender Text
[PTimer]
...

Es soll also alles nach dem Ausdruck [Terminplaner] bis zur nächsten eckigen Klammer gelöscht werden,
da nicht auf jedem Rechner der Ausdruck [PTimer] nach [Terminkalender] folgt.

Ich hoffe es kann mir jemand helfen.

Viele Dank!
Mitglied: Friemler
28.01.2013, aktualisiert um 17:31 Uhr
Hallo Blackhawk386,

das könnte so gehen:
01.
@echo off & setlocal 
02.
 
03.
set "InFile=.\test.ini" 
04.
set "OutFile=.\test_new.ini" 
05.
set "BlockBegin=[Terminplaner]" 
06.
 
07.
set "DontWrite=" 
08.
set "Write=" 
09.
 
10.
(for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%InFile%"') do ( 
11.
   if not defined DontWrite ( 
12.
     echo.%%b 
13.
     if "%%b" equ "%BlockBegin%" set /a DontWrite+=1 
14.
   ) else ( 
15.
     echo.%%b|findstr "^\[.*" > NUL && set /a Write+=1 
16.
     if defined Write echo.%%b 
17.
18.
)) > "%OutFile%"
Gruß
Friemler
Bitte warten ..
Mitglied: Blackhawk386
29.01.2013 um 08:42 Uhr
Super, tut genau was es soll!
Vielen Dank dafür.

Allerdings bekomm ich beim Ausführen Fehlermeldungen, ist das ein Problem?

01.
D:\>terminplaner.bat 
02.
Der Befehl "6" ist entweder falsch geschrieben oder 
03.
konnte nicht gefunden werden. 
04.
Der Befehl "13" ist entweder falsch geschrieben oder 
05.
konnte nicht gefunden werden. 
06.
Der Befehl "14" ist entweder falsch geschrieben oder 
07.
konnte nicht gefunden werden. 
08.
Der Befehl "1" ist entweder falsch geschrieben oder 
09.
konnte nicht gefunden werden. 
10.
Der Befehl "2" ist entweder falsch geschrieben oder 
11.
konnte nicht gefunden werden. 
12.
Der Befehl "6" ist entweder falsch geschrieben oder 
13.
konnte nicht gefunden werden. 
14.
Der Befehl "9" ist entweder falsch geschrieben oder 
15.
konnte nicht gefunden werden. 
16.
Der Befehl "12" ist entweder falsch geschrieben oder 
17.
konnte nicht gefunden werden. 
18.
Der Befehl "3" ist entweder falsch geschrieben oder 
19.
konnte nicht gefunden werden. 
20.
Der Befehl "4" ist entweder falsch geschrieben oder 
21.
konnte nicht gefunden werden. 
22.
Der Befehl "5" ist entweder falsch geschrieben oder 
23.
konnte nicht gefunden werden. 
24.
Der Befehl "11" ist entweder falsch geschrieben oder 
25.
konnte nicht gefunden werden.
Bitte warten ..
Mitglied: Friemler
29.01.2013 um 10:07 Uhr
Moin Blackhawk386,

ich vermute, Deine Ini-Datei enthält &-Zeichen. Teste mal die folgende, abgeänderte Version des Scripts:
01.
@echo off & setlocal 
02.
 
03.
set "InFile=.\test.ini" 
04.
set "OutFile=.\test_new.ini" 
05.
set "BlockBegin=[Terminplaner]" 
06.
 
07.
set "DontWrite=" 
08.
set "Write=" 
09.
 
10.
(for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%InFile%"') do ( 
11.
   if not defined DontWrite ( 
12.
     echo.%%b 
13.
     if "%%b" equ "%BlockBegin%" set /a DontWrite+=1 
14.
   ) else ( 
15.
     <NUL set /p "=%%b"|findstr "^\[.*" > NUL && set /a Write+=1 
16.
     if defined Write echo.%%b 
17.
18.
)) > "%OutFile%"
Gruß
Friemler
Bitte warten ..
Mitglied: Blackhawk386
29.01.2013 um 12:06 Uhr
Funktioinert perfekt!

Vielen lieben Dank!
Bitte warten ..
Mitglied: Friemler
30.01.2013 um 11:13 Uhr
Dann setze bitte noch den Beitrag auf "Gelöst".
Bitte warten ..
Mitglied: Blackhawk386
30.01.2013 um 12:01 Uhr
Anfänger Fehler :D
Ist erledigt.
Bitte warten ..
Mitglied: KekseFuerAlle
14.06.2016, aktualisiert 15.06.2016
Tachchen,
ich habe ein ähnliches Problem, wie in diesem Thread:

Eventuell kann mir jemand hierrauf aubauend weiterhelfen.
Und zwar will ich auch einen Text zwischen zwei Zeichen/Zeichenfolgen löschen.
Aber im Gegensatz zu dem oben beschriebenen Fall will ich das nicht in einer .txt Datei, sondern in einer Variable.
Desweiteren ist die Zeichenfolge jedesmal mit 1-2 Zeichen anders (die aber immer an der selben stelle stehen).
Also muss man wahrscheinlich mit Wildcards arbeiten, z.b. Fragezeichen.
Lässt sich das mit Batch überhaupt machen, oder muss man das mit Powershell machen? Wie würde das in Batch / Powershell aussehen?

Zum Beipiel:

Protokoll.T01.beliebigerzulöschenderText-Autor
Protokoll.T02.beliebigerzulöschenderText-Autor
etc ...


Ich hoffe da kann mir jemand weiterhelfen.

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Text Datei bestimmte Bereiche lesen und in neue Text schreiben (3)

Frage von TurboD zum Thema Batch & Shell ...

Microsoft
Registry Einträge Löschen (Skript) (4)

Frage von Shnuuu zum Thema Microsoft ...

Batch & Shell
gelöst Skript für Daten löschen (3)

Frage von DarkJM zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch sucht bestimmten "text" in einer .txt datei und soll dann die Zeile anzeigen (6)

Frage von MedicalAd zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(2)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Humor (lol)
gelöst Freidach Beitrag (40)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Firewall
gelöst Firewall Firmeneimsatz (22)

Frage von wiesi200 zum Thema Firewall ...

Multimedia & Zubehör
gelöst 8 GB USB Stick besitzt nur noch 4 MB Kapazität (13)

Frage von Gwahlers zum Thema Multimedia & Zubehör ...