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

Wie kann ich Text zwischen zwei Markierungen ersetzen.

Mitglied: MilhouseNo1

MilhouseNo1 (Level 1) - Jetzt verbinden

15.04.2010 um 10:04 Uhr, 2695 Aufrufe, 2 Kommentare

Hallo zusammen,

Ich muss ein Skript (Batch, VBScript) erstellen, welches beliebigen Text zwischen zwei Kommentarstellen ersetzt.
'SearchAndReplace' kann ich nicht verwenden, da nicht sichergestellt ist, dass der Text zwischen den Markierungen immer gleich ist.

Mein Ansatz war RegExp in VBS aber leider komme ich da nicht weiter.
Die Zeilenumbrüche stellen vermutlich das Problem dar.


BSp.
Batch-File ALT:
REM ##MARKER1### 
bel 
lie 
biger 
text 
REM ##MARKER2###
Vielleicht hat jemand eine ähnliche Aufgabe bereits umgesetzt.

Danke
MilhouseNo1
Mitglied: TsukiSan
15.04.2010 um 10:24 Uhr
Hallo MilhouseNo1,

also wenn du Replace nicht haben möchtest in VBS kannst du es mit
Split/Join versuchen.

Du möchtest doch zwischen den
REM ##MARKER1###
und
REM ##MARKER2###
usw.
die einzelnen Zeilen/Texte rausfiltern, richtig?
dann lies die Datei ein mit
01.
Pfad = "C:\MeineDatei.txt" 
02.
Set FSO = CreateObject("Scripting.FileSystemObject") 
03.
Set MeineDaten = FSO.OpenTextFile(Pfad,1) 
04.
MeineZeilen = Split(MeineDaten.ReadAll,VbCrlf) 
05.
' ab hier hast du alle einzelnen Zeilen in einem Array "MeineZeilen()" 
06.
MeineDaten.Close
danach kannst du die einzelnen Zeilen replacen/splitten oder was auch immer.

Gruss
Tsuki
Bitte warten ..
Mitglied: 76109
15.04.2010 um 13:12 Uhr
Hallo MilhouseNo1, Hallo Tsuki!

Hiermal ein Basis-Beispiel, wie es funktionieren könnte. Dabei ist es unerheblich, ob auf einen REM ein weiterer REM folgt, z.B. kein REM in der letzten Zeile.

Test.Cmd zum Aufruf der Test.vbs mit Argumenten:
01.
@echo off 
02.
cscript //nologo "E:\Test\Test.vbs" "E:\Test\Test.txt" "##MARKER1###" "##MARKER5###;hat;den;anderen;Text;ersetzt"
wobei das 1. Argument den Pfad der Batch-Datei, das 2. Argument den Such-Text und das 3.Argument den Ersetzen-Text darstellt. Die Semikolons stehen für Zeilenumbrüche.

Test.vbs:
01.
Dim Args, Fso, File, OldRem, Marker, Text, NewText, RemText 
02.
 
03.
Set Args = WScript.Arguments 
04.
 
05.
If Args.Count < 3 Then WScript.Echo "Zuwenig Argumente!":  WScript.Quit 
06.
 
07.
Path = Args(0):  OldRem = Args(1):  NewText = Replace(Args(2), ";", vbCrLf) & vbCrLf 
08.
 
09.
Set Fso = CreateObject("Scripting.FileSystemObject") 
10.
Set File = Fso.OpenTextFile(Path) 
11.
 
12.
Text = File.ReadAll:  File.Close:  RemText = Split(Text, "REM ", -1, vbTextCompare) 
13.
 
14.
For Each Marker In RemText 
15.
    If InStr(1, Marker, OldRem, vbTextCompare) > 0 Then 
16.
        Text = Replace(Text, Marker, NewText) 
17.
        Set File = Fso.CreateTextFile(Path) 
18.
        File.Write Text:  File.Close:  Exit For 
19.
    End If 
20.
Next
Die übergebene Batch-Datei (erstes Argument) wird überschrieben, insofern vorher eine Sicherungskopie anlegen.

Zusätzlich wird nicht zwischen Klein/Großschreiben unterschieden.

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Text in mehreren .docx suchen und ersetzen

gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Ich hoffe auf Antworten von Leuten, die genau das per Tool schon mal gemacht haben: Selektiere mehrere ...

Grafik

Scan mit Markierung

gelöst Frage von jojo0411Grafik5 Kommentare

Hallo Leute, Hat jemand von euch eine Idee ob es einen Scanner gibt der nach dem Scan das Dokument ...

Microsoft Office

One Note Markierung drucken???

gelöst Frage von Florian86Microsoft Office8 Kommentare

Hallo, kann man im OneNote einen markierten Bereich ausdrucken. Wenn ich auf drucken gehe und bei den Druckereinstellungen nur ...

Microsoft Office

BMP Bild mit Text aus Word Datei ersetzen

gelöst Frage von Timo0oMicrosoft Office16 Kommentare

Halli Hallo, ich habe eine kurze Frage, vielleicht kann mir dadurch ja jemand viel Arbeit ersparen! Undzwar habe ich ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...