
82312
31.08.2009, aktualisiert am 18.10.2012
String ersetzen mittels Replace
Hi Leute,
ich soll Textzeilen aus einer .txt Datei umwandeln und in eine .cmd Datei abspeichern.(VBScript)
Quelldatei: Quelle.txt
Inhalt: z.B. \\denetz2is21fps1\u$\users\mustermannm
muss umgewandelt werden in:
Zieldatei: Zieldatei.cmd
Inhalt: Rsync -vrPtz winreplicator@denetz2is21fps1::u-data/users/mustermannm /cygdrive/u/users
wobei das /u$/ variabel ist, also es kann auch /e$/ heißen...zudem ist der servername auch variabel....
Mein Ausbilder hatte mir gesagt ich soll das mit InString Len Pos machen damit komme ich aber garnicht klar...
RegExp kann ich leider auch nicht...
Ich wäre euch sehr verbunden, wenn ihr mir ein paar Tips geben könntet
Vielen Dank,
Max
ich soll Textzeilen aus einer .txt Datei umwandeln und in eine .cmd Datei abspeichern.(VBScript)
Quelldatei: Quelle.txt
Inhalt: z.B. \\denetz2is21fps1\u$\users\mustermannm
muss umgewandelt werden in:
Zieldatei: Zieldatei.cmd
Inhalt: Rsync -vrPtz winreplicator@denetz2is21fps1::u-data/users/mustermannm /cygdrive/u/users
wobei das /u$/ variabel ist, also es kann auch /e$/ heißen...zudem ist der servername auch variabel....
Mein Ausbilder hatte mir gesagt ich soll das mit InString Len Pos machen damit komme ich aber garnicht klar...
RegExp kann ich leider auch nicht...
Ich wäre euch sehr verbunden, wenn ihr mir ein paar Tips geben könntet
Vielen Dank,
Max
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 123823
Url: https://administrator.de/forum/string-ersetzen-mittels-replace-123823.html
Ausgedruckt am: 22.04.2025 um 10:04 Uhr
19 Kommentare
Neuester Kommentar
... und
1b) auch andere Quellen benutzen (mir war fast so, als hätte ich ähnliche Fragestellungen sogar schon in diesem Forum hier gesehen
)
1c) es (zusätzlich zu den Vorgaben wie "InStr" etc) mit der Übersetzung des Begriffes "ersetzen" versuchen
und schließlich (später)
4) hinterfragen, ob es nötig/sinnvoll ist, per VBS einen Batch zu erstellen, wenn sich die Aufgabe ev auch ohne diesen Umweg unmittelbar in Batch realisieren ließe ...
Grüße
bastla
1b) auch andere Quellen benutzen (mir war fast so, als hätte ich ähnliche Fragestellungen sogar schon in diesem Forum hier gesehen
1c) es (zusätzlich zu den Vorgaben wie "InStr" etc) mit der Übersetzung des Begriffes "ersetzen" versuchen
und schließlich (später)
4) hinterfragen, ob es nötig/sinnvoll ist, per VBS einen Batch zu erstellen, wenn sich die Aufgabe ev auch ohne diesen Umweg unmittelbar in Batch realisieren ließe ...
Grüße
bastla
Hi,
da da so viel Variables drin ist, würde ich auf Regual Expressions ausweichen.
Ich kenn VB Scripte nciht und weiß nicht wie fähig die damit umgehen können aber mit nem Perl Script und nen bisschen RegEx ist das nicht so schwer.
Mit z.B. dem Toturial http://www.xlab.net/jochen/perl/perl-3.html oder jedem anderen über RegEx kommst du weiter.
gruß
Woolfsmann
Edit ... Ich konnts nicht lassen ;)
da da so viel Variables drin ist, würde ich auf Regual Expressions ausweichen.
Ich kenn VB Scripte nciht und weiß nicht wie fähig die damit umgehen können aber mit nem Perl Script und nen bisschen RegEx ist das nicht so schwer.
Mit z.B. dem Toturial http://www.xlab.net/jochen/perl/perl-3.html oder jedem anderen über RegEx kommst du weiter.
gruß
Woolfsmann
Edit ... Ich konnts nicht lassen ;)
#/usr/bin/perl
use strict;
open (IN,"Quelle.txt");
open (OUT,">Zieldatei.cmd");
foreach (<IN>)
{
if ($_ =~ /\\\\(.*)\\.*\\users\\(.*)/)
{
print OUT "Rsync -vrPtz winreplicator\@$1::u-data/users/$2 /cygdrive/ u/ /users\n";
}
}
Hallo baeks1986!
... uns aber aus unerfindlichen Gründen nicht zeigen wolltest ...
Vorweg eine Anmerkung zu Deinem Schnipsel: Das Schreiben in die Datei ist natürlich nur einmal erforderlich - wenn alle Ersetzungen vorgenommen sind.
Wenn es variable Bestandteile in den Pfaden gibt, müssen diese ja an einem Kriterium zu erkennen sein (etwa am "$" oder der Position innerhalb des Pfades), ansonsten lässt sich der Vorgang ohnehin nicht automatisieren.
Es wird sich in diesem Fall anbieten, die Datei zeilenweise zu verarbeiten, die jeweilige Zeile (= den Pfad) per
Grüße
bastla
P.S.:
zu 1b) ich habe soetwas nicht gefunden,
War offensichtlich auch gar nicht nötig - dieser Beitrag hätte ohnehin fast genau den gleichen Ansatz geboten, den Du schon hattest ...... uns aber aus unerfindlichen Gründen nicht zeigen wolltest ...
Vorweg eine Anmerkung zu Deinem Schnipsel: Das Schreiben in die Datei ist natürlich nur einmal erforderlich - wenn alle Ersetzungen vorgenommen sind.
Wenn es variable Bestandteile in den Pfaden gibt, müssen diese ja an einem Kriterium zu erkennen sein (etwa am "$" oder der Position innerhalb des Pfades), ansonsten lässt sich der Vorgang ohnehin nicht automatisieren.
Es wird sich in diesem Fall anbieten, die Datei zeilenweise zu verarbeiten, die jeweilige Zeile (= den Pfad) per
Split()
in die einzelnen Bestandteile zu zerlegen und diese zu untersuchen, umzuwandeln und dann neu zu kombinieren.Grüße
bastla
P.S.:
und zu 4) ja es ist nötig eine batch zu erstellen, weil die zieldatei in einem cmd prog ausgeführt wird.
Infrage gestellt habe ich ja nur die Notwendigkeit des VBScripts, nicht des Batches (der, wie oben für das Script dargestellt, die Ausgangsdatei ebenfalls zeilenweise auslesen, in ihre Bestandteile zerlegen und umformen sowie schließlich das "Rsync" auch gleich ausführen könnte) ...
@Woolfsmann
ACK, obwohl es mit der Variablität ja nicht so dramatisch sein dürfte (vermutlich nur Server- und Share-Anteil).
Grüße
bastla
ACK, obwohl es mit der Variablität ja nicht so dramatisch sein dürfte (vermutlich nur Server- und Share-Anteil).
Grüße
bastla
Hallo baeks1986!
Na geht ja dahin ...
Wenn Du die Zerlegung in einzelne Zeilen geschafft hast, kannst Du ja auch diese einzelnen Zeilen samt Zusatz per
Zur oben noch gestellten Frage
Dann würde sich auch das Anfügen des Zusatzes wieder per
Grüße
bastla
Na geht ja dahin ...
Wenn Du die Zerlegung in einzelne Zeilen geschafft hast, kannst Du ja auch diese einzelnen Zeilen samt Zusatz per
WriteLine
in die Zieldatei schreiben.Zur oben noch gestellten Frage
oder vllt kann ich einfach die Leerzeilen löschen?
Das könntest Du zB so lösen:Do While InStr(strContent, vbCrLF & vbCrLF) > 0
strContent = Replace(strContent, vbCrLF & vbCrLF, vbCrLF)
Loop
Replace()
anbieten:strContent = Replace(strContent, vbCrLF, strZusatz & vbCrLF)
bastla
Hallo baeks1986!
Das Löschen der Leerzeilen funktioniert in Deiner "Sparvariante" (ohne Schleife) allerdings nur für einzelne, nicht aber für mehrere aufeinander folgende Leerzeilen ...
Noch eine Anmerkung zur Variablendeklaration mit "Dim": Wenn Du diese verwendest, dann aber konsequent für alle im Script vorkommenden Variablen und mit einem "Option Explicit" als erster Zeile, damit Du auf nicht deklarierte (das sind vor allem auch falsch geschriebene) Variablen hingewiesen wirst.
Grüße
bastla
Das Löschen der Leerzeilen funktioniert in Deiner "Sparvariante" (ohne Schleife) allerdings nur für einzelne, nicht aber für mehrere aufeinander folgende Leerzeilen ...
Noch eine Anmerkung zur Variablendeklaration mit "Dim": Wenn Du diese verwendest, dann aber konsequent für alle im Script vorkommenden Variablen und mit einem "Option Explicit" als erster Zeile, damit Du auf nicht deklarierte (das sind vor allem auch falsch geschriebene) Variablen hingewiesen wirst.
Grüße
bastla
Hallo baeks1986!
Sobald Du das "Option Explicit" eingefügt hast, wirst Du beim nächsten Scriptlauf bemerken, dass es auch noch nicht deklarierte Variablen gibt ...
Der (zusätzliche) Sinn der Variablenprüfung ist, dass falsch geschriebene Variablennamen (etwa ein "strNewContnet ") als "nicht deklariert" bemängelt werden und Du damit einen Hinweis auf diesen Fehler erhältst.
Grüße
bastla
Sobald Du das "Option Explicit" eingefügt hast, wirst Du beim nächsten Scriptlauf bemerken, dass es auch noch nicht deklarierte Variablen gibt ...
Der (zusätzliche) Sinn der Variablenprüfung ist, dass falsch geschriebene Variablennamen (etwa ein "strNewContnet ") als "nicht deklariert" bemängelt werden und Du damit einen Hinweis auf diesen Fehler erhältst.
Grüße
bastla