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.

Frage Entwicklung Batch & Shell

Mitglied: MilhouseNo1

MilhouseNo1 (Level 1) - Jetzt verbinden

15.04.2010 um 10:04 Uhr, 2688 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
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 4 StundenViren und Trojaner

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 8 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware7 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...