theone101
Goto Top

Dateien aus Ordnern einlesen und wieder als Variable ausgeben

Hallo zusammen,

ich soll aus Ordner und Unterodner (die mir nicht bekannt sind, sprich ich weis nicht wie viele es gibt) Datien mit Endung *.ts auslesen diese *.ts sollen dann mit dem Befehl TsToXml -f TsToXmlConfig.xml [datiename].ts in XML konvertiert werden.

Ich möchte also eigentlich nur eine schleife die dies erreicht das alle meine Dateien die ich aus den ganzen Ordnern und Unterordnern ausgelesen hab konvertiert werden.

Ich habe schon versucht die Dateien einzulesen und mit dir /b /s *.ts > C:\test.txt geht das auch, er schreibt mir alle Pfade in die test.txt.

Sprich das sieht dann so aus:
C:\Dokumente und Einstellungen\[Ordner]\[Unterordner]\[unbekannt]\muc.ts
C:\Dokumente und Einstellungen\[Ordner]\[Unterordner]\[unbekannt]\muc_690000khz_8mhz.ts
C:\Dokumente und Einstellungen\[Ordner]\[Unter]\[unbek]\[unbek]\muc_834000khz_8mhz_2.ts


Mein Problem ist aber, ich weis nicht wie ich die unterschiedlichen Dateinamen auslesen soll und als variable so in eine schleife packe das ich sie in dem TsToXml Befehl alle Dateien konvertieren kann.

Hoffe da kann mir jemand weiter helfen.

Gruß Thomas

P.S. Danke schon mal im vorraus.

Content-ID: 80708

Url: https://administrator.de/forum/dateien-aus-ordnern-einlesen-und-wieder-als-variable-ausgeben-80708.html

Ausgedruckt am: 10.01.2025 um 07:01 Uhr

Dani
Dani 14.02.2008 um 10:10:41 Uhr
Goto Top
Hallo Thomas,
probier es mal so:
@echo off

for /f "delims=" %%a in ('dir /s /b "C:\Test" *.ts') do TsToXml -f TsToXmlConfig.xml "%%a"  
Es handelt sich um eine einfache Schleife wo, einfach alle Dateien die mit *.ts enden mit den DO-Körper verarbeitet.


Gruß
Dani
theone101
theone101 14.02.2008 um 10:25:29 Uhr
Goto Top
Ne geht leider net ich muss ja in der schleife noch ne variable setzen damit ich ja aus den Textzeilen nur meine z.b. muc.ts rauslese und diese hinten am Befehl TsToXml anhängen kann.

Also TsToXml -f TsToXmlconig.xml muc.ts

In der Datei stehen meine Gelesenen Pfade die ich ja so drinnen habe (z.B.):
C:\Dokumente und Einstellungen\[Ordner]\[Unterordner]\[unbekannt]\muc.ts
C:\Dokumente und Einstellungen\[Ordner]\[Unterordner]\[unbekannt]\muc69000_0khz_8mhz.ts
C:\Dokumente und Einstellungen\[Ordner]\[Unter]\[unbek]\[unbek]\muc_834000khz_8mhz_2.ts
...

Ich möchte nun das meine Batsch aus der ersten zeile nur muc.ts ausliest und dan mir muc.ts hinten an meinen TsToXML Befehl anfügt. Nach der Ausführung des Befehls soll die nächste Zeile eingelesen werden hir wieder nur muc69000_0khz_8mhz.ts und diese soll wieder hinten angehängt werde aber nur diese datei alo nicht der ganze Pfad. usw.

Aber trotzdem Danke
Vielleicht hat ja jemand auch ne andere Idee wie man des schneller machen könnte

Gruß Thomas
bastla
bastla 14.02.2008 um 10:44:04 Uhr
Goto Top
Hallo theone101!

Auch wenn ich den Sinn, nur den Namen einer Datei, welche sich in irgendeinem Unterordner befindet, anzugeben, nicht nachvollziehen kann:
for /f "delims=" %%a in (C:\test.txt) do TsToXml -f TsToXmlConfig.xml "%%~nxa"  

Mehr zum Thema findest Du unter "for /?".

Grüße
bastla

[Edit] Überzähliges "l" aus "delims" entfernt. [/Edit]
theone101
theone101 14.02.2008 um 13:33:34 Uhr
Goto Top
Ja hat leider net Funktioniert weis auch net warum er hat die Variable net gefunden bzw hat diese net mit den einzelnen Namen genomen sonder wieder mit dem ganzen Pfad.

Vielleicht hab ich des auch zu unverstädlich geschreiben.

Ich möchte eigentlich nur eine Batch die Dateinamen aus nem Ordner ausliest und diese Dateinamen mit der Endung .ts egal wie viele es sind nacheinander dem Befehl TsToXml übergeben werden. Damit ich des nicht einzeln von Hand abarbeiten muss weil des schon verdamt viele sind face-wink

Gruß Thomas
theone101
theone101 14.02.2008 um 14:39:03 Uhr
Goto Top
OHHH ich hab jetzt den Fehler endekt.
Ich darf net den Pfadnamen mit Leerzeichen haben hier halt [Dokumente und Einstellungen].

Als ich alles verschoben habe nur in C:\ dan gings. Vielleicht hat ja irgend einer ne Lösung wie man des mit Leerzeichen machen kann.

Gruß Thomas
Dani
Dani 14.02.2008 um 14:41:16 Uhr
Goto Top
Hallo Thomas,
Vielleicht hat ja irgend einer ne Lösung wie man des mit Leerzeichen machen kann.
Analysiere mal meinen 1. Codeblock...da wirst du die Lösung direkt sehen....


Grüße
Dani
theone101
theone101 14.02.2008 um 14:55:32 Uhr
Goto Top
Ohhh hab noch was endeckt und zwar er wandelt mir alle .ts dateien die im selben verzeichnis sind um aber die Unterordner leider nicht. Weis da jemand wie man dies beheben kann?

Gruß Thomas
bastla
bastla 14.02.2008 um 17:23:57 Uhr
Goto Top
Hallo theone101!

Vielleicht solltest Du nicht nur die Dateinamen, sondern auch die Pfade verwenden ...

Die Leerzeichen im Pfadnamen hätten sich übrigens bei keiner der angebotenen Varianten auswirken dürfen, da "%%a" immer unter Anführungszeichen geschrieben war - außer natürlich, Dein Batch enthält Bestandteile, von denen wir noch nichts wissen.

Falls es Dir unter diesem Aspekt ein Bedürfnis sein sollte, den aktuellen Stand deines Batches zu posten, verwende für die Darstellung bitte -Tags.

Grüße
bastla
theone101
theone101 15.02.2008 um 06:39:31 Uhr
Goto Top
Morgen erst mal, ich möchte allen erst mal herzlich Danken ihr habt mir schon sehr viel weiter geholfen, ich hoffe wir können auch noch den rest der Problemstellung Lösen face-wink

Also hier ist der Code:
@echo off

dir /b /s *.ts > C:\test.txt

for /f "delims=" %%a in (C:\test.txt) do TsToXml -f TsToXmlConfig.xml "%%~nxa"  

pause

Nun leider benutzt er nicht die Pfade für die Unterdateien und nimmt nur Ihre Namen was mein Befehl TsToXml ja dann nicht wissen kann wo die Datei ist. Der denkt die Datei ist im Selben verzeichniss wie die Batch weil er ja nur den Namen der Datei aus der test.txt ausliest und nicht den ganzen Pfad.

Ich hoffe ihr könnt mir da ein bissle weiterhelfen.

Gruß Thomas
theone101
theone101 15.02.2008 um 07:26:39 Uhr
Goto Top
Hallo noch mal. Tja so schnell kanns gehn habs haraus gefunden.

Für jeden des interesiert:

@echo off

dir /b /s *.ts > C:\test.txt

for /f "delims=" %%a in (C:\test.txt) do TsToXml -f TsToXmlConfig.xml "%%~pnxa"  

pause

Hab einfach des p dazugefügt für den ganzen Pfad und schon hats geklappt.

Danke nochmal an euch alle. Hätte es ohne euch net geschaft.

Gruß Thomas
Dani
Dani 15.02.2008 um 08:27:22 Uhr
Goto Top
Moin!
Dann leg ich noch einen drauf. :-P

@echo off

for /f "delims=" %%a in ('dir /b /s *.ts') do TsToXml -f TsToXmlConfig.xml "%%~pnxa"  
pause

Grüße
Dani

P.S. Sieht meinem 1. Kommentar ziemlich ähnlich. *g*
bastla
bastla 15.02.2008 um 09:39:54 Uhr
Goto Top
... ich möcht' auch noch mal: face-wink
@echo off

for /f "delims=" %%a in ('dir /b /s *.ts') do TsToXml -f TsToXmlConfig.xml "%%a"  
pause

Grüße
bastla