Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (28)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (21)

Frage von Kuemmel zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (17)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...