Per Batchdatei Textdateien bearbeiten
Über den find- Befehl und das >/>> am Ende von Batch- Befehlen hinausgehende Funktionen zum Bearbeiten von Dateien per Batchdatei
Ich habe folgendes Problem: Ich würde gerne per Batchdatei Dateien bearbeiten. Die Funktionen, die mir da bisher bekannt sind, sind mir zu wenig. Als Beispiel nehme ich die Datei C:\test.txt. Ich kann z. B. echo abc>>C:\test.txt schreiben, dann wird hinten in der Datei abc hingeschrieben. Jedoch hätte ich gerne noch weitere Funktionen. Was ich mir wünschen würde, ist folgendes:
1. Löschen von Teilen der Datei. Wenn also beispielsweise eine Zeile abc xyz stv in der Datei steht, würde ich gerne xyz löschen können. Auch Zeilenumbrüche würde ich gerne löschen können.
2. Die Alles Ersetzen- Funktion.
3. Hinzufügen von Text an beliebigen Stellen, auch mitten in Zeilen, also nicht nur am Ende der Datei, wie es bei Batch- Befehlen mit >>C:\test.txt am Ende möglich ist. Außerdem würde ich gerne Zeilenumbrüche an beliebigen Stellen erstellen können. In diesem Zusammenhang hätte ich gerne eine Suchfunktion. Damit meine ich, wenn in der Datei eine Zeile abc xyz stv steht, dass ich z. B. genau nach dieser Zeile eine weitere Zeile hinzufügen kann, egal, ob abc xyz stv in Zeile 25, 40 oder welcher auch immer steht.
Es wäre jeweils kein Problem, wenn die Veränderungen in der Datei dazu führen würden, dass dafür eine neue Datei erstellt wird, obwohl es aus meiner Sicht besser wäre, wenn die Veränderungen direkt in der Datei gemacht würden. Die Funktionen des find- Befehls sind mir übrigens bekannt, aber meines Wissens sind die 3 Punkte, die mir fehlen, damit nicht möglich.
Es wäre kein Problem, wenn dafür eine externe Software erforderlich ist, mit Bordmitteln geht es meines Wissens sowieso nicht. Die Betriebssysteme, auf denen ich das benutzen will, sind Windows XP Pro und Home. Ich weiß nicht, ob solche Funktionen mit Batchdateien überhaupt möglich sind, aber wenn jemand zu einem der Punkte was weiß, würde ich mich freuen.
Ich habe folgendes Problem: Ich würde gerne per Batchdatei Dateien bearbeiten. Die Funktionen, die mir da bisher bekannt sind, sind mir zu wenig. Als Beispiel nehme ich die Datei C:\test.txt. Ich kann z. B. echo abc>>C:\test.txt schreiben, dann wird hinten in der Datei abc hingeschrieben. Jedoch hätte ich gerne noch weitere Funktionen. Was ich mir wünschen würde, ist folgendes:
1. Löschen von Teilen der Datei. Wenn also beispielsweise eine Zeile abc xyz stv in der Datei steht, würde ich gerne xyz löschen können. Auch Zeilenumbrüche würde ich gerne löschen können.
2. Die Alles Ersetzen- Funktion.
3. Hinzufügen von Text an beliebigen Stellen, auch mitten in Zeilen, also nicht nur am Ende der Datei, wie es bei Batch- Befehlen mit >>C:\test.txt am Ende möglich ist. Außerdem würde ich gerne Zeilenumbrüche an beliebigen Stellen erstellen können. In diesem Zusammenhang hätte ich gerne eine Suchfunktion. Damit meine ich, wenn in der Datei eine Zeile abc xyz stv steht, dass ich z. B. genau nach dieser Zeile eine weitere Zeile hinzufügen kann, egal, ob abc xyz stv in Zeile 25, 40 oder welcher auch immer steht.
Es wäre jeweils kein Problem, wenn die Veränderungen in der Datei dazu führen würden, dass dafür eine neue Datei erstellt wird, obwohl es aus meiner Sicht besser wäre, wenn die Veränderungen direkt in der Datei gemacht würden. Die Funktionen des find- Befehls sind mir übrigens bekannt, aber meines Wissens sind die 3 Punkte, die mir fehlen, damit nicht möglich.
Es wäre kein Problem, wenn dafür eine externe Software erforderlich ist, mit Bordmitteln geht es meines Wissens sowieso nicht. Die Betriebssysteme, auf denen ich das benutzen will, sind Windows XP Pro und Home. Ich weiß nicht, ob solche Funktionen mit Batchdateien überhaupt möglich sind, aber wenn jemand zu einem der Punkte was weiß, würde ich mich freuen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 32462
Url: https://administrator.de/contentid/32462
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
24 Kommentare
Neuester Kommentar
Das meiste davon würde über extreme Umwege mittels for, findstr und wieder das Umleiten der Ausgabe in die neue Datei.
Das das 10x aufwendiger (und schwerer zu warten) ist, als einfach Perl oder dgl. zu nehmen sollte dir wohl klar sein.
Als Anhaltspunkte will ich dir da nur for, die verzögerte Erweiterung von Umgebungsvariablen und ggf. setlocal/endlocal nennen.
Das das 10x aufwendiger (und schwerer zu warten) ist, als einfach Perl oder dgl. zu nehmen sollte dir wohl klar sein.
Als Anhaltspunkte will ich dir da nur for, die verzögerte Erweiterung von Umgebungsvariablen und ggf. setlocal/endlocal nennen.
Hi,
ersetzen von einzelnen Stellen in Textdateien geht über SED/CAT/TR (alles Unixbefehle die es auch für Windows gibt)
@Schirrmeister: Ja mit den Windows Boardmitteln ist es schon schwierig. Aber mit ein paar nützlichen Tools geht dass schon. Nicht so schnell aufgeben. Wenn man Batchen möchte, geht alles .Frag mal den Batch Biber...
1. Stellen ersetzen:
Ersetzt xyz gegen abc in der Datei input.txt und gibt das Ergebnis in output.txt aus.
Entfernt den String xyz und ersetzt ihn durch nichts
Zeilenumbrüche entfernen:
2. Alles ersetzen ??
echo Hallo hier bin ich > output.txt
Ersetzt den Inhalt von output.txt durch Hallo hier bin ich.
Aber das muss Du genauer erläutern.
3. Zeilen einfügen vor oder nach bestimmten Markern:
(Quelle:http://www.tu-harburg.de/rzt/tuinfo/oberflaechen/UNIX_Script/node52.htm ..)
(1) a\ text
Hinter jede gekennzeichnete Zeile wird text eingefügt.
(1) i\ text
Für die Funktion i\ (insert) gilt das gleiche wie für a mit dem Unterschied, daß text vor der gekennzeichneten Zeile eingefügt wird.
Beispiel: sed -f script_file bsp.f > xx
Inhalt von script_file:
(Die Befehlszeilen für sed in dem Beispiel werden hier nicht richtig dargestellt. Schau mal beim Link nach.)
Das Kommando bewirkt folgendes:
Die Datei bsp.f ist die Eingabedatei vom sed.
Vor (i) jede Zeile mit dem Textmuster subroutine werden
die obigen drei Kommentarzeilen geschrieben.
Der so veränderte Text wird in die Datei xx geschrieben.
Ein paar Infos:
http://de.wikipedia.org/wiki/Sed_%28Unix%29
SED/CAT/TR Download für Windows:
http://unxutils.sourceforge.net/
Ein paar Einzeiler:
http://sed.sourceforge.net/sed1line_de.html
Zumindest hast Du jetzt eine Anregung wie man den begrenzten Befehlssatz erweitern kann.
Gruß Miguel
ersetzen von einzelnen Stellen in Textdateien geht über SED/CAT/TR (alles Unixbefehle die es auch für Windows gibt)
@Schirrmeister: Ja mit den Windows Boardmitteln ist es schon schwierig. Aber mit ein paar nützlichen Tools geht dass schon. Nicht so schnell aufgeben. Wenn man Batchen möchte, geht alles .Frag mal den Batch Biber...
1. Stellen ersetzen:
sed "s/xyz/abc/g" <input.txt>output.txt
Ersetzt xyz gegen abc in der Datei input.txt und gibt das Ergebnis in output.txt aus.
sed "s/xyz/ /g" <input.txt>output.txt
Entfernt den String xyz und ersetzt ihn durch nichts
Zeilenumbrüche entfernen:
cat test.txt | tr -d "\n"
2. Alles ersetzen ??
echo Hallo hier bin ich > output.txt
Ersetzt den Inhalt von output.txt durch Hallo hier bin ich.
Aber das muss Du genauer erläutern.
3. Zeilen einfügen vor oder nach bestimmten Markern:
(Quelle:http://www.tu-harburg.de/rzt/tuinfo/oberflaechen/UNIX_Script/node52.htm ..)
(1) a\ text
Hinter jede gekennzeichnete Zeile wird text eingefügt.
(1) i\ text
Für die Funktion i\ (insert) gilt das gleiche wie für a mit dem Unterschied, daß text vor der gekennzeichneten Zeile eingefügt wird.
Beispiel: sed -f script_file bsp.f > xx
Inhalt von script_file:
/subroutine/ i\
C\
CUnterprogramm*\
C
C\
CUnterprogramm*\
C
(Die Befehlszeilen für sed in dem Beispiel werden hier nicht richtig dargestellt. Schau mal beim Link nach.)
Das Kommando bewirkt folgendes:
Die Datei bsp.f ist die Eingabedatei vom sed.
Vor (i) jede Zeile mit dem Textmuster subroutine werden
die obigen drei Kommentarzeilen geschrieben.
Der so veränderte Text wird in die Datei xx geschrieben.
Ein paar Infos:
http://de.wikipedia.org/wiki/Sed_%28Unix%29
SED/CAT/TR Download für Windows:
http://unxutils.sourceforge.net/
Ein paar Einzeiler:
http://sed.sourceforge.net/sed1line_de.html
Zumindest hast Du jetzt eine Anregung wie man den begrenzten Befehlssatz erweitern kann.
Gruß Miguel
@gogoflash
Er fragte explizit nach Batch, und so habe ich geantwortet!
Du kannst mir glauben, daß ich das auch mit Perl, C, C#, Java oder sonstwas erledigen kann, auch mit Batch würde ich das hinbekommen, ich sagte lediglich das es sehr aufwendig ist.
Ich bin sicherlich der letzte, der schnell aufgibt.
Er fragte explizit nach Batch, und so habe ich geantwortet!
Du kannst mir glauben, daß ich das auch mit Perl, C, C#, Java oder sonstwas erledigen kann, auch mit Batch würde ich das hinbekommen, ich sagte lediglich das es sehr aufwendig ist.
Ich bin sicherlich der letzte, der schnell aufgibt.
Moin, sl3
schirrmeister und gogoflash haben es eigentlich schon erschöpfend behandelt, nur einen Aspekt noch will ich ergänzen.
Mit native Batch "eben mal schnell" spontane Search-and-Replace-Funktionen ausführen - geht, aber ist wirklich zu umständlich und zu aufwändig.
Mit den Skriptsprachen VBSkript/JSkript und natürlich auch KiX lässt sich vieles ergänzen, aber richtig flexibel und benutzerfreundlich wird es nicht so schnell.
Die Situationen, in denen ich dennoch diesen Weg gehen oder zumindest prüfen würde, sind die Massendatenverarbeitung und/oder die regelmäßig anliegende Dateiverarbeitung.
Beispiel:
Wenn ich aus 200 Dateien überall die 7te und die 15te Zeile löschen will und den String "Hans" durch den String "Wurst" ersetzen will
-oder-
Wenn ich täglich aus einer frisch erzeugten Logdatei die "relevanten" Informationen herausfiltere und diesen Extract an eine eigene AlleTage.log dranhänge (oder die Infos in eine Datenbank inserte), dann würde ich schon Batch nehmen. Allerdings auch angereichert mit Change/Replace-Utilities oder ganz auf eine der vielen Freeware-Sed's ausweichen.
Grüße (und danke an alle für diesen schönen Thread)
Biber
P.S.
@Schirrmeister
schirrmeister und gogoflash haben es eigentlich schon erschöpfend behandelt, nur einen Aspekt noch will ich ergänzen.
Mit native Batch "eben mal schnell" spontane Search-and-Replace-Funktionen ausführen - geht, aber ist wirklich zu umständlich und zu aufwändig.
Mit den Skriptsprachen VBSkript/JSkript und natürlich auch KiX lässt sich vieles ergänzen, aber richtig flexibel und benutzerfreundlich wird es nicht so schnell.
Die Situationen, in denen ich dennoch diesen Weg gehen oder zumindest prüfen würde, sind die Massendatenverarbeitung und/oder die regelmäßig anliegende Dateiverarbeitung.
Beispiel:
Wenn ich aus 200 Dateien überall die 7te und die 15te Zeile löschen will und den String "Hans" durch den String "Wurst" ersetzen will
-oder-
Wenn ich täglich aus einer frisch erzeugten Logdatei die "relevanten" Informationen herausfiltere und diesen Extract an eine eigene AlleTage.log dranhänge (oder die Infos in eine Datenbank inserte), dann würde ich schon Batch nehmen. Allerdings auch angereichert mit Change/Replace-Utilities oder ganz auf eine der vielen Freeware-Sed's ausweichen.
Grüße (und danke an alle für diesen schönen Thread)
Biber
P.S.
@Schirrmeister
Ich bin sicherlich der letzte, der schnell aufgibt.
Der vorletzte... ich bin ja auch noch da.
Wie oben geschrieben, sl3,
machbar ist alles - nur mit einem passenden Werkzeug geht es halt schneller.
So, wie Du Deine Anforderung skizziert hast (von einem "fixen" Textfile aus geklonte Varianten erstellen), ist es schon prüfenswert, ob sich dafür nicht ein Batch zusammenschroten lässt.
Poste doch mal von der Muster-Vorlage die relevanten Zeilen (oder alles; werden ja keine 300 Zeilen sein) und die Soll-Variante.
Dann lässt sich doch abschätzen, ob das sinnvoller mit Batch oder VBS oder KiX oder whatever zu lösen ist oder ob wir da erst auf eine 128-Bit-Version von Windows warten müssen.
Gruß
Biber
machbar ist alles - nur mit einem passenden Werkzeug geht es halt schneller.
So, wie Du Deine Anforderung skizziert hast (von einem "fixen" Textfile aus geklonte Varianten erstellen), ist es schon prüfenswert, ob sich dafür nicht ein Batch zusammenschroten lässt.
Poste doch mal von der Muster-Vorlage die relevanten Zeilen (oder alles; werden ja keine 300 Zeilen sein) und die Soll-Variante.
Dann lässt sich doch abschätzen, ob das sinnvoller mit Batch oder VBS oder KiX oder whatever zu lösen ist oder ob wir da erst auf eine 128-Bit-Version von Windows warten müssen.
Gruß
Biber
Na ja,
könnte lösbar sein...
Output:
Grüße
Biber
könnte lösbar sein...
::---snipp KlonVorlage.bat
@echo off & setlocal
type vorlage.txt
echo.
set /p Zeile1=<vorlage.txt
for /f "delims=" %%i in ('more +1 vorlage.txt') do set "Zeile2=%%i"
echo Zeile1 Zeile2
echo %zeile1% %Zeile2%
::-snapp KlonVorlage.bat
Output:
Z:\>
$cmd$klonVorlage.bat
xcopy "C:\Dokumente und Einstellungen\User1"
"C:\Dokumente und Einstellungen\User2" /Parameter
Zeile1 Zeile2
xcopy "C:\Dokumente und Einstellungen\User1" "C:\Dokumente und Einstellungen\User2" /Parameter
Biber
Hey,
ich weiß ich schreib hier in einen uralten Thread, aber meist sind doch neue nicht erwünscht ...
Ich habe ein anderes Problem, was sich aber mit fast der gleichen Lösung beheben lassen würde ...
Ich arbeite selber sehr gerne mit Batch aber bei dem FOR verstehe ich das "('more +1 vorlage.txt')"
aus der Zeile:
for /f "delims=" %%i in ('more +1 vorlage.txt') do set "Zeile2=%%i"
nicht.
Was sind diese halben Anführungsstrich, und was ist "more+1 "?
Die Windows CMD Hilfe hat mir dazu nichts sagen können ... (for /?)
Ich würde mich sehr über eine Kurzerklärung oder einen Link freuen ...
Gruß
BluBb_mADe
ich weiß ich schreib hier in einen uralten Thread, aber meist sind doch neue nicht erwünscht ...
Ich habe ein anderes Problem, was sich aber mit fast der gleichen Lösung beheben lassen würde ...
Ich arbeite selber sehr gerne mit Batch aber bei dem FOR verstehe ich das "('more +1 vorlage.txt')"
aus der Zeile:
for /f "delims=" %%i in ('more +1 vorlage.txt') do set "Zeile2=%%i"
nicht.
Was sind diese halben Anführungsstrich, und was ist "more+1 "?
Die Windows CMD Hilfe hat mir dazu nichts sagen können ... (for /?)
Ich würde mich sehr über eine Kurzerklärung oder einen Link freuen ...
Gruß
BluBb_mADe
Moin BluBb-mADe,
willkommen im Forum.
Dir FOR/F-Anweisung erwartet eine (unformatierte/Plain-Text-)Datei als zu verarbeitenden Input.
Daher kommt ja auch das "/F" im "For /F .... vom neudeutschen Wort "File" (weil da file Zeilen drin sind).
Es muss aber nicht ein existierendes File (aus dem Dateisystem), sondern darf auch die Bildschirmausgabe eines ausgeführten Befehls sein.
Wesentlich ist nur, dass zu dieser -aus Sicht der FOR/F-Anweisung -Einlese-Quelle ein geöffnetes File-Handle existiert.
Steht also innerhalb der Klammer weder
> dann wird dieser Fall (c) interpretiert als "alles innerhalb der einfachen Anführungszeichen ist ein von der CMD.exe ausführbarer/aufrufbarer Befehl".
In diesem Fall wird also der Befehl "more +1 vorlage.txt" ausgeführt, gleichbedeutend mit
"Zeige mir seitenweise die Datei vorlage.txt an (aber überspringe die erste Zeile)"
Okay, wenn du es am CMD-Prompt direkt aufrufst und die Datei Vorlage.txt ein paar 100 Zeilen lang ist, dann würde der "more"-Befehl auch nach jeder Bildschirmseite anhalten und auf die Homer-Simpson-Taste warten.
Bei einer Ausgabe an ein offenes Filehandle allerdings ist die Seitenlänge nahe unendlich, "blättern" wird also der "more"-Befehl in einer FOR/F-Anweisung eher selten.
Ein oder zwei andere Beispiele zu FOR/F-Anweisungen findest du auch im Bereich "Batch & Shell".hier im Forum.
Grüße
Biber
willkommen im Forum.
Zitat von @90957:
Hey,
ich weiß ich schreib hier in einen uralten Thread, ..
Mein seliger Onkel Heinz-Dieter war auch nekrophil....Hey,
ich weiß ich schreib hier in einen uralten Thread, ..
...aber meist sind doch neue nicht erwünscht ...
Öhmm... jetzt rein statistisch oder mehr gefühlt.... oder geraten....?... bei dem FOR verstehe ich das "('more +1 vorlage.txt')"
aus der Zeile:
for /f "delims=" %%i in ('more +1 vorlage.txt') do set "Zeile2=%%i"
nicht.
Was sind diese halben Anführungsstrich, und was ist "more+1 "?
aus der Zeile:
for /f "delims=" %%i in ('more +1 vorlage.txt') do set "Zeile2=%%i"
nicht.
Was sind diese halben Anführungsstrich, und was ist "more+1 "?
Dir FOR/F-Anweisung erwartet eine (unformatierte/Plain-Text-)Datei als zu verarbeitenden Input.
Daher kommt ja auch das "/F" im "For /F .... vom neudeutschen Wort "File" (weil da file Zeilen drin sind).
Es muss aber nicht ein existierendes File (aus dem Dateisystem), sondern darf auch die Bildschirmausgabe eines ausgeführten Befehls sein.
Wesentlich ist nur, dass zu dieser -aus Sicht der FOR/F-Anweisung -Einlese-Quelle ein geöffnetes File-Handle existiert.
Steht also innerhalb der Klammer weder
- (a) ein Dateiname
- (b) oder ein in doppelten Anführungszeichen vorgegebener Text
- sondern (c) etwas in einfachen Anführungszeichen
> dann wird dieser Fall (c) interpretiert als "alles innerhalb der einfachen Anführungszeichen ist ein von der CMD.exe ausführbarer/aufrufbarer Befehl".
In diesem Fall wird also der Befehl "more +1 vorlage.txt" ausgeführt, gleichbedeutend mit
"Zeige mir seitenweise die Datei vorlage.txt an (aber überspringe die erste Zeile)"
Okay, wenn du es am CMD-Prompt direkt aufrufst und die Datei Vorlage.txt ein paar 100 Zeilen lang ist, dann würde der "more"-Befehl auch nach jeder Bildschirmseite anhalten und auf die Homer-Simpson-Taste warten.
Bei einer Ausgabe an ein offenes Filehandle allerdings ist die Seitenlänge nahe unendlich, "blättern" wird also der "more"-Befehl in einer FOR/F-Anweisung eher selten.
Ein oder zwei andere Beispiele zu FOR/F-Anweisungen findest du auch im Bereich "Batch & Shell".hier im Forum.
Grüße
Biber
aahhhh....
Das "Filehandle" kannte ich gar nicht.
Das eröffnet ja so einige Möglichkeiten!
Auf das mit dem more hätte ich auch eigentlich selber kommen können ...
Vielen dank!
Du hast mir sehr geholfen...
Und dann auch noch soo schnell!
Ich hab bis jetzt hier im Forum nur Beiträge (meist von dir) gefunden, die meine Fragen schon beantwortet haben
und deshalb wurde eine Anmeldung bis jetzt einfach nie nötig ;D ...
Das "Filehandle" kannte ich gar nicht.
Das eröffnet ja so einige Möglichkeiten!
Auf das mit dem more hätte ich auch eigentlich selber kommen können ...
Vielen dank!
Du hast mir sehr geholfen...
Und dann auch noch soo schnell!
Ich hab bis jetzt hier im Forum nur Beiträge (meist von dir) gefunden, die meine Fragen schon beantwortet haben
und deshalb wurde eine Anmeldung bis jetzt einfach nie nötig ;D ...
Hallo Biber,
2010 ist lange her, aber ich versuchts mal mit dem alten Thread. Ich habe eine Aufgabe an der ich scheitere. Folgende Situation:
Wir bekommen laufend per ftp Dateien mit der Namenskonvention Sendungsnummer.txt geschickt. Diese sind in der Struktur immer gleich aufgebaut, haben aber unterschliedliche Namen. Innerhalb dieser Dateien steht immer an der gleichen Stelle die Zeichenfolge A00STD. Diese muss ich nach A00ABH umbenennen. Der Dateiname soll sich dabei nicht ändern. Nach der Bearbeitung müssen die Dateien dann in ein andere Verzeichnis verschoben werden. Von dort aus werden sie dann den nachgelagerten System übergeben.
Ich habe den ganzen Tag Codes aus dem Internet durchforstet und versucht, mir die Vorgehendsweisen zu erschließen. Aber leider komme ich wie gesagt nicht weiter. Ich würde das gerne per Batch lösen und kein separates Programm installieren, sonst muss ich mir wieder eine Freigabe der IT holen und ich versteh ja auch, dass die das nicht wollen.
Gibt es hier eine Möglichkeit?
2010 ist lange her, aber ich versuchts mal mit dem alten Thread. Ich habe eine Aufgabe an der ich scheitere. Folgende Situation:
Wir bekommen laufend per ftp Dateien mit der Namenskonvention Sendungsnummer.txt geschickt. Diese sind in der Struktur immer gleich aufgebaut, haben aber unterschliedliche Namen. Innerhalb dieser Dateien steht immer an der gleichen Stelle die Zeichenfolge A00STD. Diese muss ich nach A00ABH umbenennen. Der Dateiname soll sich dabei nicht ändern. Nach der Bearbeitung müssen die Dateien dann in ein andere Verzeichnis verschoben werden. Von dort aus werden sie dann den nachgelagerten System übergeben.
Ich habe den ganzen Tag Codes aus dem Internet durchforstet und versucht, mir die Vorgehendsweisen zu erschließen. Aber leider komme ich wie gesagt nicht weiter. Ich würde das gerne per Batch lösen und kein separates Programm installieren, sonst muss ich mir wieder eine Freigabe der IT holen und ich versteh ja auch, dass die das nicht wollen.
Gibt es hier eine Möglichkeit?
Hey,
ich bin zwar nicht Biber, aber ich kann dir trotz dem sagen dass das Problemlos möglich ist.
Aber ich denke es wäre sinnvoll nächstes mal einen neuen Thread zu erstellen.
So kann ja niemand deine Frage finden.
Es klingt als wäre der einfachste Weg die Textdatei zeilenweise durchzugehen und jede Zeile nach
diesem String zu durchsuchen und dabei neu zu schreiben.
Das hier z.B. sollte pi mal Daumen tun was du dir vorstellst.
Einfach deine txt per drag'n'drop da drauf.
batch code:
(Vorsicht, das Script entfernt auf Grund der funktionsweise der For-Schleife Leerzeilen. Dafür gibt es sicher ein Workaround, aber mir fällt gerade nix ein.)
Falls du noch Hilfe bei den Zielpfaden/Dateinamen o.ä. sag einfach Bescheid. Vieleicht kann ich ja helfen.
(Auch ein Ersetzen in einer spezifischen Zeile sollte mit geringem Mehraufwand möglich sein.)
ich bin zwar nicht Biber, aber ich kann dir trotz dem sagen dass das Problemlos möglich ist.
Aber ich denke es wäre sinnvoll nächstes mal einen neuen Thread zu erstellen.
So kann ja niemand deine Frage finden.
Es klingt als wäre der einfachste Weg die Textdatei zeilenweise durchzugehen und jede Zeile nach
diesem String zu durchsuchen und dabei neu zu schreiben.
Das hier z.B. sollte pi mal Daumen tun was du dir vorstellst.
Einfach deine txt per drag'n'drop da drauf.
batch code:
@echo off && setlocal enabledelayedexpansion
for /F "tokens=1* delims=" %%f in ('type "%1"') do (
set "out=%%f"
set "out=!out:A00STD=A00ABH!"
echo[!out!>>"%~n1.changed.txt"
)
::del "%1"
(Vorsicht, das Script entfernt auf Grund der funktionsweise der For-Schleife Leerzeilen. Dafür gibt es sicher ein Workaround, aber mir fällt gerade nix ein.)
Falls du noch Hilfe bei den Zielpfaden/Dateinamen o.ä. sag einfach Bescheid. Vieleicht kann ich ja helfen.
(Auch ein Ersetzen in einer spezifischen Zeile sollte mit geringem Mehraufwand möglich sein.)
Hi,
super. Das klappt schonmal ganz gut. Um es für meine Kollegen nutzbar zu machen, wären noch ein paar Änderungen hilfreich
1. Der Dateiname sollte erhalten bleiben. Ich habe das jetzt so gelöst, dass der neue Dateiname eine andere Endung bekommt, hier .txt. Am Ende des Scripts benenne ich denn den kompletten Inhalt des Ordners von *.txt nach *.for um. Das ist sicherlich nicht ganz sauber, aber geht erstmal. Wenn du noch eine bessere Lösung hast ... immer gerne.
2. Wichtig wäre mir, dass ich das ganze per geplanten Task aufgrufen kann. Dieser sollte dann die Batch-Datei aufrufen, die dann wiederum im Verzeichnis mit den umzubenennenden Dateien eine nach der anderen abarbeitet.
Zwei Dinge sind mir noch aufgefallen, die ich nicht lösen kann:
3. ich habe natürlich einges herumprobiert und dabei auch Fehler gemacht. Und nach einer nicht erfolgreichen Ausführung geht es beim nächsten mal grundsätzlich nicht. Da sucht er dann die Datei aus dem vorherigen Versuch, die es aber u.U. gar nicht mehr gibt. Benne ich die dann wie gewünscht um, läuft das Script und auch beim nächsten mal wieder. Ist sicherlich nicht all zu hoch zu bewerten, da es nach der Probier-Phase zu keinen Fehlermeldungen mehr kommen sollte. Dennoch ein ungutes Gefühl.
4. sehr seltsam, und das mausert sich zu einem großen Problem, ist, dass das Script lokal und am Terminalserver unterschiedliche Verhalten zeigt. Lokal haut es hin, aber am Temrinalserver verschwindet die Originaldatei OHNE dass es eine neue gibt. Woran kann denn nun das wieder liegen?
* UPDATE: Punkt 4 ist gelöst. Warum auch immer muss ich am TS explizit angeben, wo ich die Datei erstellt haben möchte. Das ist standardmäßig nicht das Verzeichnis, in dem der Batch ausgeführt wird! Mit exakten Pfadangaben funktioniert das aber wieder wie gewohnt. *
So sieht der Code nun aktuell aus:
@echo off && setlocal enabledelayedexpansion
for /F "tokens=1* delims=" %%f in ('type "%1"') do (
set "out=%%f"
set "out=!out:A00STD=A00ABH!"
echo[!out!>>"%~n1.txt"
)
del "%1"
ren "*.txt" "*.178"
Gib'ts zu den Punkten Ideen?
super. Das klappt schonmal ganz gut. Um es für meine Kollegen nutzbar zu machen, wären noch ein paar Änderungen hilfreich
1. Der Dateiname sollte erhalten bleiben. Ich habe das jetzt so gelöst, dass der neue Dateiname eine andere Endung bekommt, hier .txt. Am Ende des Scripts benenne ich denn den kompletten Inhalt des Ordners von *.txt nach *.for um. Das ist sicherlich nicht ganz sauber, aber geht erstmal. Wenn du noch eine bessere Lösung hast ... immer gerne.
2. Wichtig wäre mir, dass ich das ganze per geplanten Task aufgrufen kann. Dieser sollte dann die Batch-Datei aufrufen, die dann wiederum im Verzeichnis mit den umzubenennenden Dateien eine nach der anderen abarbeitet.
Zwei Dinge sind mir noch aufgefallen, die ich nicht lösen kann:
3. ich habe natürlich einges herumprobiert und dabei auch Fehler gemacht. Und nach einer nicht erfolgreichen Ausführung geht es beim nächsten mal grundsätzlich nicht. Da sucht er dann die Datei aus dem vorherigen Versuch, die es aber u.U. gar nicht mehr gibt. Benne ich die dann wie gewünscht um, läuft das Script und auch beim nächsten mal wieder. Ist sicherlich nicht all zu hoch zu bewerten, da es nach der Probier-Phase zu keinen Fehlermeldungen mehr kommen sollte. Dennoch ein ungutes Gefühl.
4. sehr seltsam, und das mausert sich zu einem großen Problem, ist, dass das Script lokal und am Terminalserver unterschiedliche Verhalten zeigt. Lokal haut es hin, aber am Temrinalserver verschwindet die Originaldatei OHNE dass es eine neue gibt. Woran kann denn nun das wieder liegen?
* UPDATE: Punkt 4 ist gelöst. Warum auch immer muss ich am TS explizit angeben, wo ich die Datei erstellt haben möchte. Das ist standardmäßig nicht das Verzeichnis, in dem der Batch ausgeführt wird! Mit exakten Pfadangaben funktioniert das aber wieder wie gewohnt. *
So sieht der Code nun aktuell aus:
@echo off && setlocal enabledelayedexpansion
for /F "tokens=1* delims=" %%f in ('type "%1"') do (
set "out=%%f"
set "out=!out:A00STD=A00ABH!"
echo[!out!>>"%~n1.txt"
)
del "%1"
ren "*.txt" "*.178"
Gib'ts zu den Punkten Ideen?
Sollte alles machbar sein.
Was den Terminalserver angeht... da hab ich leider keine Ahnung.
Ich würde mal raten dass es an %~n1 oder an type "%1" liegt... aber wirklich nur geraten.
(Vieleicht sind es auch irgendwelche systeminternen Sicherheitsrichtlinien.)
Noch mal zusammengefasst:
Das Script wird in einem festen Interval ausgeführt,
soll alle txt Dateien in einem bestimmten Ordner korrigieren
und danach in einen anderen bestimmten verschieben.
Richtig?
Was den Terminalserver angeht... da hab ich leider keine Ahnung.
Ich würde mal raten dass es an %~n1 oder an type "%1" liegt... aber wirklich nur geraten.
(Vieleicht sind es auch irgendwelche systeminternen Sicherheitsrichtlinien.)
Noch mal zusammengefasst:
Das Script wird in einem festen Interval ausgeführt,
soll alle txt Dateien in einem bestimmten Ordner korrigieren
und danach in einen anderen bestimmten verschieben.
Richtig?
Wie gesagt ist das Thema mit dem TS geklärt.
Die Zusammenfassung ist im Grunde richtig. Leicht abgewandelt soll der Ablauf wie folgt sein:
1. Dateien werden per ftp eingelagert
2. Script wird per geplantem Task ausgeführt, z.B. minütlich
3. Das Script arbeitet alle Dateien ab, die in dem Empfangs-Ordner liegen. Im Script würde ich das so hinterlegen, dass die neuen Dateien gleich im Zielordner erzeugt werden, dann spart man sich das verschieben und umbenennen.
4. Die ursprüngliche Datei kann dann gelöscht werden.
Bei 1 und 2 weiß ich, was zu tun ist. Bei 3 und 4 komme ich nicht weiter.
Die Zusammenfassung ist im Grunde richtig. Leicht abgewandelt soll der Ablauf wie folgt sein:
1. Dateien werden per ftp eingelagert
2. Script wird per geplantem Task ausgeführt, z.B. minütlich
3. Das Script arbeitet alle Dateien ab, die in dem Empfangs-Ordner liegen. Im Script würde ich das so hinterlegen, dass die neuen Dateien gleich im Zielordner erzeugt werden, dann spart man sich das verschieben und umbenennen.
4. Die ursprüngliche Datei kann dann gelöscht werden.
Bei 1 und 2 weiß ich, was zu tun ist. Bei 3 und 4 komme ich nicht weiter.
Jetzt wird's bunt. Bevor wir das mit dem Abarbeiten der Dateien klären, gibt es eine weitere, unerwartete Baustelle. Folgender Ausschnitt aus einer Musterdatei
G0000100340422549926090665 0000050001 usw, usw, usw
G99001O NNJNN178743743980 NI 11316089
H000015047618900 112 50311316089
Ziel ist es jetzt, in der Zeile, die mit H00 beginnt, die Zeichenfolge 503 zu finden. Die nach 503 folgenden 35 Zeichen müssen in die Zwischenablage bzw. eine Variable gespeichert werden. Mit dem Inhalt müssen wir in die Zeile, die mit G00 beginnt gehen. Dort soll dann der Inhalt der Zwischenablage ab Zeichen 7 einkopiert werden. Der alte Wert darf in H00 stehen bleiben, mit dem müssen wir nichts weiter machen. Der obige Datensatz würde dann so aussehen:
G0000111316089 0000050001 usw, usw, usw
G99001O NNJNN178743743980 NI 11316089
H000015047618900 112 50311316089
Leider werden beim Posten die Leerzeichen herausgelöscht. Ich hoffe, dass das dennoch verständlich geschrieben ist.
Ist das auch zu bewerkstelligen?
Lieben Dank vorab.
G0000100340422549926090665 0000050001 usw, usw, usw
G99001O NNJNN178743743980 NI 11316089
H000015047618900 112 50311316089
Ziel ist es jetzt, in der Zeile, die mit H00 beginnt, die Zeichenfolge 503 zu finden. Die nach 503 folgenden 35 Zeichen müssen in die Zwischenablage bzw. eine Variable gespeichert werden. Mit dem Inhalt müssen wir in die Zeile, die mit G00 beginnt gehen. Dort soll dann der Inhalt der Zwischenablage ab Zeichen 7 einkopiert werden. Der alte Wert darf in H00 stehen bleiben, mit dem müssen wir nichts weiter machen. Der obige Datensatz würde dann so aussehen:
G0000111316089 0000050001 usw, usw, usw
G99001O NNJNN178743743980 NI 11316089
H000015047618900 112 50311316089
Leider werden beim Posten die Leerzeichen herausgelöscht. Ich hoffe, dass das dennoch verständlich geschrieben ist.
Ist das auch zu bewerkstelligen?
Lieben Dank vorab.
Moin an alle...
Ich habe eine Frage, und zwar arbeite ich mit der Cryengine als Modder, ich habe hier knapp 300-400 .mtl Dateien(Textdateien mit der Endung .mtl). In diesen .mtl Dateien sind knapp 400 einträge mit der Endung .jpg (hier ein kleines Beispiel).
newmtl street
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.0990 0.0990 0.0990
Ke 0.0000 0.0000 0.0000
map_Ka tex\street_diffuse.jpg
map_Kd tex\street_diffuse.jpg
map_Ks tex\street_specular.jpg
map_Ke tex\street_illumination.jpg
newmtl sidewalk2
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.1080 0.1080 0.1080
Ke 0.0000 0.0000 0.0000
map_Ka tex\street_layout_01_diffuse.jpg
map_Kd tex\street_layout_01_diffuse.jpg
map_Ks tex\street_layout_01_specular.jpg
map_Ke tex\street_sidewalk_illumination.jpg
Ich muss alle Endungen von .jpg in die Endung .dds umschreiben in der .mtl Datei (Das sind in jeder Datei ungefähr bis 400 Stück)
damit es nachher so aussieht(hier ein Beispiel)
Von:
map_Ka tex\street_layout_01_diffuse.jpg
map_Kd tex\street_layout_01_diffuse.jpg
map_Ks tex\street_layout_01_specular.jpg
map_Ke tex\street_sidewalk_illumination.jpg
zu:
map_Ka tex\street_layout_01_diffuse.dds
map_Kd tex\street_layout_01_diffuse.dds
map_Ks tex\street_layout_01_specular.dds
map_Ke tex\street_sidewalk_illumination.dds
was muss ich in eine Batch Datei schreiben das er zb alle .mtl Dateien in einem Ordner abändert,(Ich würde dann immer die .mtl dateien in einen Ordner kopieren, und auf Batch drücken) ich muss das sonst alles peer Hand machen, und das wären knapp 160000 Einträge, und das ist einfach nicht zu schaffen. Ich habe schon 6 Stunden lang gegoogelt, und bin nicht fündig geworden, dann bin ich über diesen Thread hier gestolpert, und ich habe wieder ein bisschen Hoffnung verspürt. Es ist nur eine Frage, wenn das zu viel Arbeit ist das zu schreiben dann müsst ihr mir nicht helfen, wie schon gesagt, es ist nur eine Frage, oder Bitte... Ich bedanke mich schonmal im voraus bei euch. Liebe Grüße
PS: Mein System ist Windows
Ich habe eine Frage, und zwar arbeite ich mit der Cryengine als Modder, ich habe hier knapp 300-400 .mtl Dateien(Textdateien mit der Endung .mtl). In diesen .mtl Dateien sind knapp 400 einträge mit der Endung .jpg (hier ein kleines Beispiel).
- 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
- File Created: 18.01.2013 11:24:44
newmtl street
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.0990 0.0990 0.0990
Ke 0.0000 0.0000 0.0000
map_Ka tex\street_diffuse.jpg
map_Kd tex\street_diffuse.jpg
map_Ks tex\street_specular.jpg
map_Ke tex\street_illumination.jpg
newmtl sidewalk2
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.1080 0.1080 0.1080
Ke 0.0000 0.0000 0.0000
map_Ka tex\street_layout_01_diffuse.jpg
map_Kd tex\street_layout_01_diffuse.jpg
map_Ks tex\street_layout_01_specular.jpg
map_Ke tex\street_sidewalk_illumination.jpg
Ich muss alle Endungen von .jpg in die Endung .dds umschreiben in der .mtl Datei (Das sind in jeder Datei ungefähr bis 400 Stück)
damit es nachher so aussieht(hier ein Beispiel)
Von:
map_Ka tex\street_layout_01_diffuse.jpg
map_Kd tex\street_layout_01_diffuse.jpg
map_Ks tex\street_layout_01_specular.jpg
map_Ke tex\street_sidewalk_illumination.jpg
zu:
map_Ka tex\street_layout_01_diffuse.dds
map_Kd tex\street_layout_01_diffuse.dds
map_Ks tex\street_layout_01_specular.dds
map_Ke tex\street_sidewalk_illumination.dds
was muss ich in eine Batch Datei schreiben das er zb alle .mtl Dateien in einem Ordner abändert,(Ich würde dann immer die .mtl dateien in einen Ordner kopieren, und auf Batch drücken) ich muss das sonst alles peer Hand machen, und das wären knapp 160000 Einträge, und das ist einfach nicht zu schaffen. Ich habe schon 6 Stunden lang gegoogelt, und bin nicht fündig geworden, dann bin ich über diesen Thread hier gestolpert, und ich habe wieder ein bisschen Hoffnung verspürt. Es ist nur eine Frage, wenn das zu viel Arbeit ist das zu schreiben dann müsst ihr mir nicht helfen, wie schon gesagt, es ist nur eine Frage, oder Bitte... Ich bedanke mich schonmal im voraus bei euch. Liebe Grüße
PS: Mein System ist Windows
Moin,
benutz dafür einfach grepwin, das lässt dich in Dateien/Verzeichnissen Suchen und Ersetzen.
Die zu bearbeitenden Dateien können auch gut gefiltert werden.
https://sourceforge.net/projects/grepwin/
benutz dafür einfach grepwin, das lässt dich in Dateien/Verzeichnissen Suchen und Ersetzen.
Die zu bearbeitenden Dateien können auch gut gefiltert werden.
https://sourceforge.net/projects/grepwin/
@echo off
set "folder=c:\Data"
powershell -Ex Bypass -Noprofile -C "gci '%folder%' -Filter *.mtl -Recurse | %%{(gc $_.Fullname) -replace '\.jpg','.mtl' | sc $_.Fullname -Force}"
Hi Leute. ich bin seit Wochen auf der suche nach einer Lösung gewesen welche ihr genau hier besprochen habt.
ich habe einen Datensatz welcher aus 300k Seriennummern besteht. Die Datei ist eine .txt und wird einfach per Endung geändert in eine .mtr. Nun ist das Problem das wir zuvor die Eingabe per Hand erledigt haben. Wir stellen gerade um auf Barcode und haben Festgestellt das der aktuelle Barcode anstatt "1000001BGV000011111" (Muster) "bgv0000011111" lautet. Da wir nun mega Probleme haben kam ich auf die Idee mit der batch Datei.
TR MKRO 9000 0 22.01.2019 17:12:47
[001]
5000010774=[F5000010774,"FBosch Krankenhaus",F2,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0000#,F0000#,F0000#,F%N-00#,F0000#,F0000#,F1,N,N,N,N,N,N,N,N,N,N,N,N,N,F-1,"F14.03.2016 08:31:03",N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[002]
5000010774=[F5000010774,F11,F0,F0]
[005]
-1=[F-1,FUnbekannt,F,N,F,F,F,F,F,F,F,F,N,F,F,F,F,"B{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fcharset1 MS Sans Serif;}{\f3\fswiss\fprq2 System;}{\f4\fswiss\fprq2 MS Sans Serif;}{\f5\fswiss\fprq2 Arial;}}.+{\colortbl\red0\green0\blue0;\red255\green0\blue0;}.+\deflang1031\pard\plain\f5\fs40\cf1\b Datensatz bitte nicht \'e4ndern !!!\plain\f2\fs16 .+\par }.+!!!!!!!!!!!!!!!!",N,N,F0,"F30.09.2003 14:39:18",N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[007]
5000013594=[F5000013594,F1,F0,N,F0,F0,F0,Fkgl,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[008]
5000391800=[F5000391800,F1,F5000013594,F-1,"Fikp,2og,labor,206,2286",F0,N,N,N,N,F1,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F1,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,N,N,N,N,N,N,F0,F0,N,N,N,N,N,N,N,N,N,N,F-1,F0,N,N,N,N,F0,F0,F-,F-1,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F3,F0,F1,F3,F6,F12,F24,F48,F60,F2,F2,F2,F2,F2,F2,F2,F2,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[009]
5000400616=[F5000400616,F1,N,N,F5000010774,F5000391800,N,N,Fbgv000002286,N,N,F___,N,F0,N,N,N,F0,N,F5000400615,F5000400615,F5000400615,F3,N,F18.01.2019,F18.01.2019,F18.01.2019,F18.01.2019,F3,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F1,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[017]
5000400615=
[024]
5000400615=[F5000400615,F5000400616,N,N,N,N,N,N,N,Fbgv000002286-000,N,N,"FManuel Ewald",F10000001,"FDIN VDE 0701-0702",F18.01.2019,F18.01.2019,N,F0,N,N,N,N,"FGOSSEN METRAWATT",N,N,N,N,N,N,N,"FSECUTEST S2N+",N,N,N,N,N,N,N,FCH5787690008,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,F0,N,F0,N,N,N,N,N,N,N,N,N,N,F-1,"F22.01.2019 10:30:36",N,N,N,N,N,N,N,N,N,N,FDESKTOP-4KC0I9I,FSYSDBA,"FWISAG Elektrotechnik Süd-West GmbH & Co. KG","FWISAG Elektrotechnik Süd-West GmbH & Co. KG","FRuppmannstraße 33c",F70565,FStuttgart,Fdep-bxu-nms,N,N,N,N,N,N,N,N,N,N]
[026]
5000400598=[F5000400598,F5000400615,F1,F-1,"FSICHT PSI","FSichtprüfung: Schutzleiter",N,N,N,N]
5000400600=[F5000400600,F5000400615,F2,F-1,"FSICHT PSI","FSichtprüfung: Isolierteile",N,N,N,N]
5000400602=[F5000400602,F5000400615,F3,F-1,"FSICHT PSI","FSichtprüfung: Gehäuse",N,N,N,N]
5000400604=[F5000400604,F5000400615,F4,F-1,"FSICHT PSI","FSichtprüfung: Anschlussleitung",N,N,N,N]
5000400606=[F5000400606,F5000400615,F5,F-1,"FSICHT PSI","FSichtprüfung: Typenschild",N,N,N,N]
5000400608=[F5000400608,F5000400615,F6,F-1,"FSICHT PSI","FSichtprüfung: unsachgemäßer Gebrauch",N,N,N,N]
5000400610=[F5000400610,F5000400615,F7,F-1,"Fi PSI Rpe",FSchutzleiterwiderstand,N,N,N,N]
5000400612=[F5000400612,F5000400615,F8,F-1,"Fi PSI Riso",FIsolationswiderstand,N,N,N,N]
5000400614=[F5000400614,F5000400615,F9,F-1,"Fi PSI Uiso","FMessspannung für Isolationswiderstand",N,N,N,N]
[027]
5000400615=[5000400598,5000400600,5000400602,5000400604,5000400606,5000400608,5000400610,5000400612,5000400614]
[028]
5000400597=[F5000400597,F5000400598,F1,"FIst der Schutzleiter in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400599=[F5000400599,F5000400600,F1,"FSind Isolierteile in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400601=[F5000400601,F5000400602,F1,"FIst das Gehäuse in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400603=[F5000400603,F5000400604,F1,"FIst die Anschlussleitung in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400605=[F5000400605,F5000400606,F1,"FIst das Typenschild in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400607=[F5000400607,F5000400608,F1,"FSind keine Anzeichen für unsachgemäßen Gebrauch vorhanden?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400609=[F5000400609,F5000400610,F1,N,FOhm,F0.300000011920929,N,F0,F,F4,F3,F0.187999993562698,N,N,F2,N]
5000400611=[F5000400611,F5000400612,F1,N,FMOhm,N,F1,F0,F>,F4,F1,F310,N,N,F2,N]
5000400613=[F5000400613,F5000400614,F1,N,FV,F500,F500,F0,F,F4,F0,F525,N,N,F1,N]
Ich muss aus diesem text das "(bgv)0000011111" filtern und ersetzen durch "1000001"
Dieser Text wiederholt sich in dieser einen Datei ca 300.000 mal.
Kann mir da bitte irgendjemand helfen. Mfg manu
ich habe einen Datensatz welcher aus 300k Seriennummern besteht. Die Datei ist eine .txt und wird einfach per Endung geändert in eine .mtr. Nun ist das Problem das wir zuvor die Eingabe per Hand erledigt haben. Wir stellen gerade um auf Barcode und haben Festgestellt das der aktuelle Barcode anstatt "1000001BGV000011111" (Muster) "bgv0000011111" lautet. Da wir nun mega Probleme haben kam ich auf die Idee mit der batch Datei.
TR MKRO 9000 0 22.01.2019 17:12:47
[001]
5000010774=[F5000010774,"FBosch Krankenhaus",F2,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0000#,F0000#,F0000#,F%N-00#,F0000#,F0000#,F1,N,N,N,N,N,N,N,N,N,N,N,N,N,F-1,"F14.03.2016 08:31:03",N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[002]
5000010774=[F5000010774,F11,F0,F0]
[005]
-1=[F-1,FUnbekannt,F,N,F,F,F,F,F,F,F,F,N,F,F,F,F,"B{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fcharset1 MS Sans Serif;}{\f3\fswiss\fprq2 System;}{\f4\fswiss\fprq2 MS Sans Serif;}{\f5\fswiss\fprq2 Arial;}}.+{\colortbl\red0\green0\blue0;\red255\green0\blue0;}.+\deflang1031\pard\plain\f5\fs40\cf1\b Datensatz bitte nicht \'e4ndern !!!\plain\f2\fs16 .+\par }.+!!!!!!!!!!!!!!!!",N,N,F0,"F30.09.2003 14:39:18",N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[007]
5000013594=[F5000013594,F1,F0,N,F0,F0,F0,Fkgl,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[008]
5000391800=[F5000391800,F1,F5000013594,F-1,"Fikp,2og,labor,206,2286",F0,N,N,N,N,F1,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F1,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,N,N,N,N,N,N,F0,F0,N,N,N,N,N,N,N,N,N,N,F-1,F0,N,N,N,N,F0,F0,F-,F-1,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F3,F0,F1,F3,F6,F12,F24,F48,F60,F2,F2,F2,F2,F2,F2,F2,F2,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[009]
5000400616=[F5000400616,F1,N,N,F5000010774,F5000391800,N,N,Fbgv000002286,N,N,F___,N,F0,N,N,N,F0,N,F5000400615,F5000400615,F5000400615,F3,N,F18.01.2019,F18.01.2019,F18.01.2019,F18.01.2019,F3,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F1,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N]
[017]
5000400615=
[024]
5000400615=[F5000400615,F5000400616,N,N,N,N,N,N,N,Fbgv000002286-000,N,N,"FManuel Ewald",F10000001,"FDIN VDE 0701-0702",F18.01.2019,F18.01.2019,N,F0,N,N,N,N,"FGOSSEN METRAWATT",N,N,N,N,N,N,N,"FSECUTEST S2N+",N,N,N,N,N,N,N,FCH5787690008,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F0,F0,F0,N,F0,N,N,N,N,N,N,N,N,N,N,F-1,"F22.01.2019 10:30:36",N,N,N,N,N,N,N,N,N,N,FDESKTOP-4KC0I9I,FSYSDBA,"FWISAG Elektrotechnik Süd-West GmbH & Co. KG","FWISAG Elektrotechnik Süd-West GmbH & Co. KG","FRuppmannstraße 33c",F70565,FStuttgart,Fdep-bxu-nms,N,N,N,N,N,N,N,N,N,N]
[026]
5000400598=[F5000400598,F5000400615,F1,F-1,"FSICHT PSI","FSichtprüfung: Schutzleiter",N,N,N,N]
5000400600=[F5000400600,F5000400615,F2,F-1,"FSICHT PSI","FSichtprüfung: Isolierteile",N,N,N,N]
5000400602=[F5000400602,F5000400615,F3,F-1,"FSICHT PSI","FSichtprüfung: Gehäuse",N,N,N,N]
5000400604=[F5000400604,F5000400615,F4,F-1,"FSICHT PSI","FSichtprüfung: Anschlussleitung",N,N,N,N]
5000400606=[F5000400606,F5000400615,F5,F-1,"FSICHT PSI","FSichtprüfung: Typenschild",N,N,N,N]
5000400608=[F5000400608,F5000400615,F6,F-1,"FSICHT PSI","FSichtprüfung: unsachgemäßer Gebrauch",N,N,N,N]
5000400610=[F5000400610,F5000400615,F7,F-1,"Fi PSI Rpe",FSchutzleiterwiderstand,N,N,N,N]
5000400612=[F5000400612,F5000400615,F8,F-1,"Fi PSI Riso",FIsolationswiderstand,N,N,N,N]
5000400614=[F5000400614,F5000400615,F9,F-1,"Fi PSI Uiso","FMessspannung für Isolationswiderstand",N,N,N,N]
[027]
5000400615=[5000400598,5000400600,5000400602,5000400604,5000400606,5000400608,5000400610,5000400612,5000400614]
[028]
5000400597=[F5000400597,F5000400598,F1,"FIst der Schutzleiter in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400599=[F5000400599,F5000400600,F1,"FSind Isolierteile in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400601=[F5000400601,F5000400602,F1,"FIst das Gehäuse in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400603=[F5000400603,F5000400604,F1,"FIst die Anschlussleitung in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400605=[F5000400605,F5000400606,F1,"FIst das Typenschild in Ordnung?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400607=[F5000400607,F5000400608,F1,"FSind keine Anzeichen für unsachgemäßen Gebrauch vorhanden?",N,F1,N,F2,N,N,N,F1,N,N,F2,N]
5000400609=[F5000400609,F5000400610,F1,N,FOhm,F0.300000011920929,N,F0,F,F4,F3,F0.187999993562698,N,N,F2,N]
5000400611=[F5000400611,F5000400612,F1,N,FMOhm,N,F1,F0,F>,F4,F1,F310,N,N,F2,N]
5000400613=[F5000400613,F5000400614,F1,N,FV,F500,F500,F0,F,F4,F0,F525,N,N,F1,N]
Ich muss aus diesem text das "(bgv)0000011111" filtern und ersetzen durch "1000001"
Dieser Text wiederholt sich in dieser einen Datei ca 300.000 mal.
Kann mir da bitte irgendjemand helfen. Mfg manu