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-Key: 80708

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: Dani
Dani Feb 14, 2008 at 09:10:41 (UTC)
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
Member: theone101
theone101 Feb 14, 2008 at 09:25:29 (UTC)
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
Member: bastla
bastla Feb 14, 2008 at 09:44:04 (UTC)
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]
Member: theone101
theone101 Feb 14, 2008 at 12:33:34 (UTC)
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
Member: theone101
theone101 Feb 14, 2008 at 13:39:03 (UTC)
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
Member: Dani
Dani Feb 14, 2008 at 13:41:16 (UTC)
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
Member: theone101
theone101 Feb 14, 2008 at 13:55:32 (UTC)
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
Member: bastla
bastla Feb 14, 2008 at 16:23:57 (UTC)
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
Member: theone101
theone101 Feb 15, 2008 at 05:39:31 (UTC)
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
Member: theone101
theone101 Feb 15, 2008 at 06:26:39 (UTC)
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
Member: Dani
Dani Feb 15, 2008 at 07:27:22 (UTC)
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*
Member: bastla
bastla Feb 15, 2008 at 08:39:54 (UTC)
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