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, 2820 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Batch & Shell
gelöst Batch-Skript für Druckerzuweisung auf Terminalserver - Variablenproblem (3)

Frage von BirdyB zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...