chgs2011
Goto Top

Textdateien TXT in allen Verzeichnissen suchen und zusammenfassen

Hallo,

ich habe ein Verzeichnis mit vielen Unterverzeichnissen, in denen viele TXT-Dateien liegen.

Ich wollte mit diesem Script alle TXT zusammenfassen zu einer.

Die TXT-Dateien enthalten mehrzeilige Texte und dürfen nicht verändert werden, nur aneinander zusammengefasst werden.


Wo liegt das Problem?

@ECHO OFF

setlocal

set "WorkingDir=C:\TEST"  
set "InFiles=%WorkingDir%\*.txt"  
set "OutFile=%WorkingDir%\Ergebnis.txt"  

type NUL > "%OutFile%"  

for %%f in ("%InFiles%") do (  
  >>"%OutFile%" <NUL set /p "=%%f@"  

  for /f "usebackq delims=" %%l in ("%%f") do (  
    >>"%OutFile%" <NUL set /p "=%%l@"  
  )

  >>"%OutFile%" echo.  
)

endlocal
exit /b

Vielen Dank

Content-Key: 321405

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

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

Mitglied: 131381
131381 Nov 18, 2016 updated at 13:15:44 (UTC)
Goto Top
PS Onliner
gci 'c:\Test' -Filter *.txt -recurse | %{gc $_.Fullname -ReadCount 1000 | Add-Content 'c:\Test\Ergebnis.txt'}  
Gruß
Member: chgs2011
chgs2011 Nov 18, 2016 at 15:28:59 (UTC)
Goto Top
Was ist das?

Suche bestenfalls eine Batch-Lösung.
Member: beidermachtvongreyscull
beidermachtvongreyscull Nov 18, 2016 at 16:16:45 (UTC)
Goto Top
Member: Endoro
Endoro Nov 19, 2016 updated at 07:55:52 (UTC)
Goto Top
Hey,

Zitat von @chgs2011:

Wo liegt das Problem?


Das solltest du uns sagen. Was passiert denn bei deinem Code (sorry, aber fremde Programme zu lesen macht mich immer wuschig).

PS: was stört dich an der Antwort von Dave?

Gruß, Endoro
Member: chgs2011
chgs2011 Nov 19, 2016 at 10:29:39 (UTC)
Goto Top
Es wird eine Ergebnis.txt angelegt, aber ohne Inhalt ... es werden wohl die Files nicht gefunden.

Von Dave, verstehe nicht was das sein soll.

Ich benötige einfach nur ein einfaches Batch Script, das mir alle TXT Files in Unterordner zu einer TXT inhaltlich zusammenfast.

Habe dazu leider nichts gefunden.
Member: Endoro
Endoro Nov 19, 2016 at 14:01:53 (UTC)
Goto Top
Hey,

Dave ist der Autor dieser Antwort. Ich habe die nicht überprüft, weil das bei ihm nicht nötig ist. Also noch mal übersetzt:

@echo off & setlocal
copy nul blah.txt >nul
for /d %%F in (level*) do copy /b blah.txt + "%%F\*.txt" >nul  

"level" ist der Startordner.
Melde dich, wenn es nicht hinhaut face-smile
Gruß, Endoro
Mitglied: 77559
77559 Nov 20, 2016 at 01:24:04 (UTC)
Goto Top
Hallo,
deine Batchdatei tut doch das was du beschrieben hast, allerdings fasst es alle Dateiinhalte zu einem langen String zusammen (Set /P) Alle Zeilenenden werden duch ein @-Zeichen ersetzt.
Ausserdem ist es niemals gut eine Datei mit gleicher Extension im Scanbereich zu erzeugen. Also in Zeile 07 besser Ergebnis.temp nehmen und ggfs später umbenennen.
Zeile 12 gibt den jeweiligen Dateinamen aus, wenn das nicht erwünscht ist - weglassen. Wenn die Zeilen ganz normal ausgegeben werden sollen Zeile 15 ersetzen durch
 >>%OutFile% Echo:%%l
Member: chgs2011
chgs2011 Nov 20, 2016 updated at 11:19:42 (UTC)
Goto Top
Danke, ich werde es mal versuchen!


EDIT:
OK, konnte doch nicht abwarten und habe es gleich getestet.

Jetzt habe ich es verstanden, sämtliche Unterverzeichnisse müssen ebenfalls alle mit "LEVEL" beginnen dann, sonst klappt dies nicht.
MMhhh... meine Unterverzeichnisse heißen unterschiedlich ... wenn ich diese umbenennen müsste, hätte ich kaum etwas gewonnen face-sad

Könnte man nicht in die FOR-Schleife ein Startverzeichnis angeben und alle Unterverzeichnisse unabhängig von Bezeichnung ansprechen?
Member: Endoro
Endoro Nov 20, 2016 at 13:45:12 (UTC)
Goto Top
Hey,

ich geb's jetzt auf und geh weinen.
Ich fasse das alles nicht mehr.
Die Welt ist mir zu geil geworden.

Hoffentlich kommt mein Kind darin noch klar.

Gruß, Endoro
Member: chgs2011
chgs2011 Nov 20, 2016 at 19:46:49 (UTC)
Goto Top
Problem gelöst, es war nicht sauber erklärt:

@echo off & setlocal
copy nul ergebnis.txt >nul
for /d %%F in (C:\TEST\*) do copy /b ergebnis.txt + "%%F\*.txt"  


Wichtig war nur, dass man "level*" richtig einsetzt mit zB "C:\TEST\*",
dann sind die Verzeichnisnamen egal.


Danke
Member: Endoro
Endoro Nov 20, 2016 updated at 23:50:21 (UTC)
Goto Top
Hey,

Zitat von @chgs2011:

Problem gelöst, es war nicht sauber erklärt:


sei mir bitte nicht böse, jeder hat mal einen "Durchhänger".
Ich wollte und will Dich nicht beleidigen.

Gruß, Endoro
Member: chgs2011
chgs2011 Nov 22, 2016 at 13:25:25 (UTC)
Goto Top
Ein kleines Problem ergab sich jetzt dennoch ...

Ich habe mehrere Verzeichnisebenen, 2-3 Stück ... aktuell klappt das Script nur mit einer Ebene.

Gibt es keinen Parameter, der alle Ebenen durchsucht ab Startverzeichnis?
Konnte nichts dazu finden ...
Mitglied: 131381
131381 Nov 22, 2016 updated at 13:44:50 (UTC)
Goto Top
dir /b /s /a-d
mit FOR-Loop drum ist dein Freund.
Member: chgs2011
chgs2011 Nov 22, 2016 at 14:30:52 (UTC)
Goto Top
mmmhhhhh .... klappt nicht face-sad


SET	"SrcDir=C:\"  
copy nul test.txt >nul
for /d %%F in (dir /b /s /a-d "%SrcDir%\*") do copy /b test.txt + "%%F\*.txt"  
Mitglied: 131381
131381 Nov 22, 2016 updated at 14:35:53 (UTC)
Goto Top
Falsch, ein For /f Loop kein for /d
Und in %%F steht dann kein Ordner sondern ein Dateipfad!

Man man man ist schon schwer die Suche zu bedienen was ...
https://www.google.de/search?q=batch+for+beginners
Member: chgs2011
chgs2011 Nov 22, 2016 at 15:18:40 (UTC)
Goto Top
Schön wenn mans kann, es werden aber nur leere Dateien angelegt ...
Mitglied: 131381
131381 Nov 22, 2016 updated at 15:44:31 (UTC)
Goto Top
Zitat von @chgs2011:
Schön wenn mans kann, es werden aber nur leere Dateien angelegt ...
Kein Wunder...Tutorial zur FOR-Schleife
@echo off
set "SrcDir=C:\Daten"  
copy nul test.txt >nul 
for /f "delims=" %%a in ('dir /b /s /a-d "%SrcDir%\*.txt"') do copy /b test.txt + "%%a"  
Member: chgs2011
chgs2011 Nov 24, 2016 at 16:56:48 (UTC)
Goto Top
Wow, sehr cool ... klappt perfekt jetzt, VIELEN DANK!

Hinten " + "%%a"" durfte ich auch keinen Dateityp anhängen, auch gut zu wissen.


Die Creme de la creme wäre natürlich noch (das Problem trat heute auf), wenn man per Batch falsch kodierte Texte gleich in ANSI kodieren könnte.
Mitglied: 131381
131381 Nov 24, 2016 updated at 17:56:01 (UTC)
Goto Top
Zitat von @chgs2011:

Wow, sehr cool ... klappt perfekt jetzt, VIELEN DANK!

Hinten " + "%%a"" durfte ich auch keinen Dateityp anhängen, auch gut zu wissen.
ein for /? hätte es dir ebenso gezeigt!

Die Creme de la creme wäre natürlich noch (das Problem trat heute auf), wenn man per Batch falsch kodierte Texte gleich in ANSI kodieren könnte.
Da nimmst du lieber gleich die Powershell. Per Batch bräuchtest du externe Tools wie iconv etc.

Dann bitte noch ein "gelöst" hinten dran.

Gruß