user2009
Goto Top

Dateiinhalte in Ordnern auslesen und in Datei speichern cmd

Mein Problem ist, dass in einer Ordnerstruktur verschieden Dateien (*.txt) sind.
Jetzt brauche ich den Dateinamen und den Dateiinhalt zusammen in einer Datei.

Quellen:
c:\ordner\*.txt
c:\ordner\unterordner1\*.txt
c:\ordner\unterordner2\*.txt

ein Ziel:
c:\zusammenfassung.txt (Datei1: Dateiname, Inhalt, Datei [i]: ....)

Ich fand in einem anderen Beitrag folgendes:
for %%i in ("o:\test\*.txt") do @(for /f "delims=" %%j in ('type %%i') do @(echo %%i %%j)) >>o:\zusammenfassung.txt  

Was muß an dem Script geändert werden, dass es o.g. Zweck erfüllt?

Content-Key: 108153

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

Printed on: April 25, 2024 at 22:04 o'clock

Mitglied: 60730
60730 Feb 05, 2009 at 12:16:01 (UTC)
Goto Top
Servus, Moin und auch dir ein freundliches Hallo.

Mein Problem ist - ich mag niemandem einen Tipp geben, der mit der Tür ins Haus fällt und ich möchte auch nicht die Mär aufkommen lassen, hier würden xx % Fragen unbeantwortet.

Was muß an dem Script geändert werden, dass es o.g. Zweck erfüllt?
Ich stelle die Frage um, und behaupte, was kann an dem Script übrigbleiben, oder doch lieber komplett neu -da du etwas ganz anderes willst.

dir /b /s *.txt
type /?

mit freundlichen Grüßen
Member: user2009
user2009 Feb 05, 2009, updated at Oct 18, 2012 at 16:37:43 (UTC)
Goto Top
Hallo Timo Beil,

das Script hatte ich hier gefunden,
Zeile aus Datei auslesen und diese dann umbenennen
als ich nach einer (ähnlichen) Lösung für meine Aufgabe suchte.

Dort werden verschieden Daten ausgelesen, aber anschließend umbenannt.

Falls das Script nicht weiter hilft, dann gern ein neues.
Der Inhalt muß halt komplett ausgelesen (voher am besten mit Dateinamen) werden.

Für einzelne Dateien, weiß ich wie es geht:
type datei1.txt > zusammenfassung.txt
type datei2.txt >> zusammenfassung.txt

Wie durchforste ich die Unterordner nach Dateien, deren Name nicht bekannt ist und das alles in einer Schleife?

Freundliche Grüße
user2009
Member: user2009
user2009 Feb 05, 2009 at 13:42:14 (UTC)
Goto Top
dir /b /s *.txt
ist nicht schlecht, aber soll das Ergebnis in eine Datei und dann zeilenweise abgearbeitet werden?

Mit
for %%i in ("o:\test\*.txt") do @(for /f "delims=" %%j in ('type %%i') do @(echo %%i %%j)) >>o:\zusammenfassung.txt  
kann man im Ordner "test" alle *.txt auslesen und in die zusammenfassung schreiben

Was nicht funktioniert ist folgendes:
1. Dateinamen mit Leerzeichen
2. Jeder Zeile, die ausgelesen wird wird der Dateiname vorangestellt --> besser nur bei der ersten Zeile aus einer Datei
3. kein durchsuchen derunterverzeichnisse

Hat bitte jemand Tipps/ Lösungen?
Mitglied: 60730
60730 Feb 05, 2009 at 13:58:45 (UTC)
Goto Top
Servus,

for %%i in ("o:\*.txt" /s) do @(  
	echo Datei "%%i" && Echo ......................... && type "%%i") >>o:\zusammenfassung.txt  

Sollte eher deinen Ansprüchen gerecht werden.

Gruß
Member: user2009
user2009 Feb 05, 2009 at 14:46:48 (UTC)
Goto Top
Hallo Timo,

funktioniert - Danke!

Das "/s" klappt zwar nicht, das Script "denkt", dass es eine Datei "/s" gibt ...
Aber da kann ich mir die Dateien vorher mit xcopy in einen Tempordner kopieren.

for %%i in ("o:\test\ordner\*.txt") do @( Echo. && Echo ......................... && echo Datei: "%%i" && Echo ......................... && type "%%i")>>o:\test\zusammenfassung.txt  
Member: user2009
user2009 Feb 05, 2009 at 15:30:10 (UTC)
Goto Top
Dank der obigen Hilfe, kam ich darauf meine sql-Dateien genauso zu packen und anschließend zu löschen:

@echo off
title sql-dateien packen
echo.
color f0

set "Ordner=sql_gz"  
if exist "%cd%\%Ordner%" rd /Q /s "%cd%\%Ordner%"  
if not exist "%Ordner%" md "%Ordner%"  

::/D:M-T-J  Kopiert nur die an oder nach dem Datum geaenderten Dateien. Ist kein Datum angegeben, werden nur Dateien kopiert, die neuer als die bestehenden Zieldateien sind.
:: /V überprüft jede neue Datei auf Korrektheit.
:: /F Zeigt die Namen der Quell- und Zieldateien
:: /Y     Unterdrueckt die Aufforderung zur Best„tigung, dass eine vorhandene Zieldatei ueberschrieben werden soll.

xcopy *.sql "%Ordner%\*.*"  /V /F /Y /D:02-05-2009  


for %%i in ("%cd%\%Ordner%\*.sql") do @("%cd%\7z\7za.exe" a -r -tgzip "%%i".gz "%%i" && DEL "%%i")   

echo. Zum Beenden eine Taste drücken.
pause >nul

wg. oben noch einmal:
Weiß doch jemand, wie man in den Schleifen Unterverzeichnisse durchsucht / bearbeitet?
Member: bastla
bastla Feb 05, 2009 at 18:32:16 (UTC)
Goto Top
Hallo user2009!

Weiß doch jemand, wie man in den Schleifen Unterverzeichnisse durchsucht / bearbeitet?
Dazu musst Du die Art der Schleife ändern:
for /f "delims=" %%i in ('dir /s /b "o:\*.txt"') do @(  
    Echo\
    Echo .........................
    Echo Datei: "%%i"  
    Echo .........................
    type "%%i"  
)>>o:\test\zusammenfassung.txt
Da es ohnehin schon ein Batch ist, würde ich die mehrzeilige Schreibweise bevorzugen - liest sich etwas leichter ...

Grüße
bastla
Member: user2009
user2009 Feb 06, 2009 at 13:46:03 (UTC)
Goto Top
Hallo Bastla,

es klappt wunderbar.
Danke!

Gruß
user2009