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, 2896 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
Windows Server
gelöst Batch Skript während dem Betrieb mittels GPO laufen lassen (14)

Frage von WinLiCLI zum Thema Windows Server ...

Batch & Shell
Wo ist der Fehler in diesem Batch Skript? (11)

Frage von gabrixl zum Thema Batch & Shell ...

Batch & Shell
Batch Skript erweitern (1)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (24)

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

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...