bodyparts
Goto Top

Jede Zeile einer TXT Datei in eine Datei schreiben

Moin...

hoffe auf nachträgliche Hilfe zu Weihnachten..... ;>)

also jede 1. Zeile einer txt Datei die sich in d:\Daten\ befinden soll in eine txt Datei geschrieben werden und mit Pfandangabe wo sich diese Datei befinden.
Da immer wieder in diesen Dateien gesucht wird habe ich überlegt das man erstamal alle Datei duchsucht und dann nur noch in der "Ergebnissdatei" sucht.
Im Ordner d:\Daten liegen ca 1000 Unterordner somit dauert die Suche in allen Dateien immer etwas und die Platte wird nicht immer wieder so stark beansprucht.

Ergebinss könnte so aussehen...

Daten der 1.Zeile d:\daten\ordner_xyz
Daten der 1. Zeile d:\daten\ordner_abc
usw

Gruß

Content-Key: 132333

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

Printed on: April 26, 2024 at 17:04 o'clock

Member: rubberman
rubberman Dec 27, 2009 at 18:53:43 (UTC)
Goto Top
Hallo bodyparts,

ungetestet etwa so:
@echo off &setlocal
set Quelle=d:\daten
set Ergebnisdatei=d:\test.txt

type nul>"%Ergebnisdatei%"  
pushd "%Quelle%"  
for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do set "Pfad=%%~dpa" &call :sub "%%a"  
popd
goto :eof

:sub
set /p ersteZeile=<%1
>>"%Ergebnisdatei%" echo %ersteZeile% %Pfad%  
goto :eof

Grüße
rubberman
Member: bodyparts
bodyparts Jan 05, 2010 at 15:49:20 (UTC)
Goto Top
so etwas her .... aber klasse

geht super

Danke

Ich würde jetzt gerne aus der Ausgabe einen Suchausdruck ( name x ) suchen und in der selben Zeile den String x:\daten..... im Explorer öffnen.
Sollte es mehere Suchausdrücke finden kann ruhig mehrmal der Explorer geöffnet werden, evtl könnte man es mit Pause stoppen.

Wäre echt klasse, wenn du eine Idee hättest

Gruß
Member: rubberman
rubberman Jan 06, 2010 at 00:32:51 (UTC)
Goto Top
Hallo bodyparts,

zu diesem Zweck ist die erzeugte Datei nicht geeignet. Grund: man muss Text und Pfad einigermaßen vernünftig wieder trennen können. Das Leerzeichen ist dafür ungeeignet.

Also ändere zunächst Zeile 13 im ersten Batch zu:
>>"%Ergebnisdatei%" echo "%Pfad%"?%ersteZeile%  
und erzeuge damit einen neue Ergebnisdatei.

Der Batch für dein Vorhaben könnte dann etwa so aussehen:
@echo off &setlocal
set source=d:\test.txt

set /p "findthis=Gib die Suchzeichenfolge ein: "  
for /f "usebackq delims=? tokens=1*" %%a in ("%source%") do (  
  echo %%b|findstr /i /l /c:"%findthis%">nul &&(start "" "explorer.exe" /n,/e,%%a &pause)  
)

Gruß
rubberman
Member: bodyparts
bodyparts Jan 06, 2010 at 13:48:57 (UTC)
Goto Top
Hi Rubberman,

ich habe eine Testausgabe in die Datei test.txt auf D geschrieben.

c:\Daten\&name c

jetzt suche ich mit der Batch nach "name c", leider passiert nichts.
Member: rubberman
rubberman Jan 06, 2010 at 14:21:31 (UTC)
Goto Top
Hallo bodyparts,

OK. Erstmal komme ich jetzt erst dahinter, wie das ganze aussehen soll und zu Zweiten war das Trennzeichen ein "?" und darf keinesfalls ein "&" sein!

Eigentlich kann ich dir aber ohne weiteres nicht helfen. Nehmen wir an, eine Datei liegt unter "C:\Daten\irgendwo" und die erste Zeile ist "name c", dann ergibt sich in der test.txt folgende Zeile:
"C:\Daten\irgendwo\"?name c  

Die Frage ist aber:
Steht in der ersten Zeile immer das Format
name x
oder könnte dort auch
blabla name x blub
stehen?

Grüße
rubberman

Und:
Wenn du eh nur das x hinter name benötigst, wozu dann überhaupt der Pfad "C:\Daten\irgendwo\" mit in die Datei schreiben? Dann würde doch die erste Zeile der Datei völlig ausreichen, oder?
Member: bodyparts
bodyparts Jan 08, 2010 at 05:20:23 (UTC)
Goto Top
Moin Rubberman,

sicher ist es egal wo die Daten liegen, das gebe ich ja als vari an.
Die Daten sehen immer so aus:

zb:

d:\Daten\wirrername\datei.txt
.
.
.d:\Daten\wiederwirrername\datei.txt

Die erste Zeile aus datei.txt ist wichtig, die wird im 1. Lauf komplett gesucht und in zb test.txt incl Pfad geschrieben. Funktioniert ja auch schon

Somit muss ich nicht immer 1000 Ordner durchsuchen und das schont die Festplatte.

Jetzt suche ich aus dem Ergebniss die erste Zeile das kann ein Name sein ( name xyz ) und wenn der gefunden ist möchte ich den Ordner direkt aufmachen..

Grüße BP
Member: rubberman
rubberman Jan 08, 2010 at 22:42:25 (UTC)
Goto Top
Hallo bodyparts,

was funktioniert dann am Code vom 06.01.2010, 01:32:51 nicht?

Wenn die Zeile in test.txt so aussieht:
"d:\Daten\wirrername\"?name xyz  
und du suchst nach xyz, dann wird der Explorer in d:\Daten\wirrername geöffnet.

Grüße
rubberman
Member: bodyparts
bodyparts Jan 09, 2010 at 12:31:02 (UTC)
Goto Top
Hallo Rubberman,

sorry, ich habe nicht in der Richtigen Umgebung getestet.

Dein Script läuft super!

Bin schwer begeistert.

Nun kann ich die ca. 1000 Ordner viel besser durch suchen. Immer wenn neue Ordner dazu kommen, werde ich den Scann einmal laufen lassen und nur noch in der Ergebinssdatei suchen, top!

Danke Dir