icram
Goto Top

per batch text aus datei ab einem best. zeichen in andere datei kopieren

hallo,

ich möchte aus mehreren txt-Dateien ab einem bestimmten Text (nämlich <!!!><???>) den nachfolgenden Text in eine neue
Datei kopieren.
also so:
suche in Datei 1 nach dem Begriff <!!!><???> und schreibe alle Zeichen danach in die Datei gesamt-neu.txt.
suche in Datei 2 nach dem Begriff <!!!><???> und schreibe alle Zeichen danach in die Datei gesamt-neu.txt.
suche in Datei 3 nach dem Begriff <!!!><???> und schreibe alle Zeichen danach in die Datei gesamt-neu.txt.

kann mir da jemand helfen? von batch-befehlen hab ich nicht so viel Ahnung. (ich kenne nur mkdir, copy, ren und so Standardsachen..)

viele Grüße

marc

Content-Key: 93839

Url: https://administrator.de/contentid/93839

Printed on: April 23, 2024 at 12:04 o'clock

Member: bastla
bastla Aug 07, 2008 at 08:56:16 (UTC)
Goto Top
Hallo icram!

Zur Not ginge es auch mit Batch alleine, aber besser geeignet für Textoperationen ist VBScript - daher eine Kombination:
@echo off & setlocal
set "Neu=D:\gesamt-neu.txt"  
set "Quelle=D:\Datei*.txt"  

if exist "%Neu%" del "%Neu%"  
set E=%temp%\Extract.vbs
> %E% echo S="<!!!><???>":T=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll:P=InStr(T,S):If P^>0 Then WScript.Echo Mid(T,P+Len(S))  

for %%i in ("%Quelle%") do cscript //nologo %E% "%%i">>"%Neu%"  
Dieser Batch erzeugt ein VBScript und "füttert" es der Reihe nach mit den Dateien, welche als %Quelle% festgelegt wurden. Das Script liefert jeweils den von Dir gewünschten Ausschnitt aus der Datei als Ergebnis zurück, welches dann an die Datei %Neu% angefügt wird.

Grüße
bastla
Member: icram
icram Aug 07, 2008 at 09:26:59 (UTC)
Goto Top
hallo bastla

SUUUPER!!! DAnke! genau so funktionierts! Vielen Dank!

noch ein kleiner Schönheitsfehler: wenn in der Ursprungsdatei ein ß,ö,ä oder ü
steht, erscheint das in der neuen Textdatei als á oder " oder so. wie kann ich das noch ändern?

viele Grüße
marc

ps: ich hab einige deiner Beiträge "gebookmarkt", u.a. hat mir dieser hier
schon sehr oft geholfen

.csv Dateien Zusammenkopieren und bestimmte Zeilen entfernen
Member: bastla
bastla Aug 07, 2008 at 09:41:47 (UTC)
Goto Top
Hallo icram!

Dann kleiner Strategiewechsel - das VBScript übernimmt auch gleich das Schreiben:
@echo off & setlocal
set "Neu=D:\gesamt-neu.txt"  
set "Quelle=D:\Datei*.txt"  

if exist "%Neu%" del "%Neu%"  
set E=%temp%\Extract.vbs
> %E% echo S="<!!!><???>":Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(WScript.Arguments(0)).ReadAll  
>>%E% echo P=InStr(T,S):If P^>0 Then fso.OpenTextFile(WScript.Arguments(1),8,1).Write Mid(T,P+Len(S))

for %%i in ("%Quelle%") do cscript //nologo %E% "%%i" "%Neu%"  
Grüße
bastla

P.S.: Freut mich immer, wenn's hilft ... face-smile

[Edit] Dem "OpenTextFile" noch ",1" hinzugefügt. [/Edit]
Member: icram
icram Aug 07, 2008 at 10:06:48 (UTC)
Goto Top
hm, jetzt erscheint folgende fehlermeldung

C:\Users\marc\AppData\Local\Temp\Extract.vbs(2, 26) Laufzeitfehler in Microsoft VBScript: Die Datei wurde nicht gefunden.

ich hab vista, muss da noch irgendwas installiert werden?
Member: bastla
bastla Aug 07, 2008 at 10:23:35 (UTC)
Goto Top
Hallo icram!

Sorry - hatte vergessen, in Zeile 8 dem "OpenTextFile" noch ein ",1" hinzuzufügen - ist inzwischen auch oben korrigiert.

Grüße
bastla
Member: icram
icram Aug 07, 2008 at 11:16:05 (UTC)
Goto Top
Vielen Dank! Funktioniert Prima!

marc