Dateinamen auslesen und in Textdatei ausgeben
Hallo liebes Forum,
der Tommy ist wieder da und hat eine Frage. Ich bin ja mal gespannt, ob jemand tatsächlich schneller ist als Bastler, der Shell-Gott im Forum.
Ich möchte eine Ordnerstruktur auslesen und jeden gefunden Dateinamen aus der Ordnerstruktur A mit allen Dateinamen der Ordnerstruktur B kombinieren. Das Ergebnis soll in einer TXT ausgegeben werden.
Jetzt die Details: Meine Ordnerstruktur sieht so aus
-Ordnerstruktur A:
|-Ordner3 (Inhalt: M1.jpeg)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner8
-Ordnerstruktur B:
|-Ordner3 (Inhalt: G2.jpeg, G3.jpg, G6.tiff, G8tif)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner7
Am Beispiel was das Skript genau macht:
Skript holt sich die Dateienamen aus der Verzeichnisstruktur A und kombiniert die gefundenen Dateinamen jeweils mit den Dateinamen aus Ordnerstruktur B.
Das Ergebnis sollte dann so aussehen:
M1-G2
M1-G3
M1-G6
M1-G8
User Bastla hat mir so etwas ähnliches mal gemacht, aber ich schaffe es leider nicht alleine das Skript für diesen Zweck umzubiegen.
Hat jemand eine Idee oder Ansätze für mich? Ist das überhaupt über die Shell zu lösen?
Eigentlich muss "nur" die Dateiliste von "Ordner 3" mit der gesamten Dateiliste von Verzeichnisstruktur B kombiniert werden.
Danach der Inhalt von Ordner6 mit der gesamten "Ordnerstruktur B"...
So, jetzt bin ich gespannt was das alte gute DOS so drauf hat - bzw. der Nachfolger.
LG
Tommy
der Tommy ist wieder da und hat eine Frage. Ich bin ja mal gespannt, ob jemand tatsächlich schneller ist als Bastler, der Shell-Gott im Forum.
Ich möchte eine Ordnerstruktur auslesen und jeden gefunden Dateinamen aus der Ordnerstruktur A mit allen Dateinamen der Ordnerstruktur B kombinieren. Das Ergebnis soll in einer TXT ausgegeben werden.
Jetzt die Details: Meine Ordnerstruktur sieht so aus
-Ordnerstruktur A:
|-Ordner3 (Inhalt: M1.jpeg)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner8
-Ordnerstruktur B:
|-Ordner3 (Inhalt: G2.jpeg, G3.jpg, G6.tiff, G8tif)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner7
Am Beispiel was das Skript genau macht:
Skript holt sich die Dateienamen aus der Verzeichnisstruktur A und kombiniert die gefundenen Dateinamen jeweils mit den Dateinamen aus Ordnerstruktur B.
Das Ergebnis sollte dann so aussehen:
M1-G2
M1-G3
M1-G6
M1-G8
User Bastla hat mir so etwas ähnliches mal gemacht, aber ich schaffe es leider nicht alleine das Skript für diesen Zweck umzubiegen.
Hat jemand eine Idee oder Ansätze für mich? Ist das überhaupt über die Shell zu lösen?
Eigentlich muss "nur" die Dateiliste von "Ordner 3" mit der gesamten Dateiliste von Verzeichnisstruktur B kombiniert werden.
Danach der Inhalt von Ordner6 mit der gesamten "Ordnerstruktur B"...
So, jetzt bin ich gespannt was das alte gute DOS so drauf hat - bzw. der Nachfolger.
LG
Tommy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146802
Url: https://administrator.de/contentid/146802
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo tommy,
bastla war vor 4 Tagen das letzte Mal aktiv,
fraglich ob er das so schnell mitbekommt.
Aber so ganz klar ist das noch nicht,
Gruß
LotPings
bastla war vor 4 Tagen das letzte Mal aktiv,
fraglich ob er das so schnell mitbekommt.
Aber so ganz klar ist das noch nicht,
- Ist deine Ordnerstruktur B immer spiegelbildlich zu A?
- gibt es jeweils nur eine Ordner Ebene oder mehrere?
- gilt das für alle Dateien oder sind nur betsimmte Extensions zu berücksichtigen?
Gruß
LotPings
Nö,
die direkte Version ist eigentlich einfacher.
Dieser erste Batch war auch vorhin schon fast fertig, aber dann kam halt was (für mich) wichtigeres dazwischen....
Only braintested (kann man sich nicht immer drauf verlassen )
Gruß
LotPings
Version überarbeitet und getestet, sollte jetzt funktionieren
die direkte Version ist eigentlich einfacher.
Dieser erste Batch war auch vorhin schon fast fertig, aber dann kam halt was (für mich) wichtigeres dazwischen....
Only braintested (kann man sich nicht immer drauf verlassen )
@Echo off
Setlocal EnableDelayedExpansion
Set BasisA=D:\Test\projekt\geraete\
Set BasisB=D:\Test\projekt\motive\
Pushd "%BasisA%"
For /f "delims=" %%A in ('Dir /B /AD') Do Call :CheckFold "%%~fA"
Echo Habe fertig.
Pause
Popd
Goto :Eof
:CheckFold
Set "GeraeteTemplates=%~1"
Set "MotiveTemplate=!GeraeteTemplates:%BasisA%=%BasisB%!"
If Not Exist "%MotiveTemplate%" Goto :Eof
Pushd "%MotiveTemplate%
For /F "delims=" %%B in ('Dir /B "%GeraeteTemplates%\*.jpeg"'
) Do For /F "Delims=" %%C in ('Dir /B *.JPEG *.JPG *.TIF *.TIFF' ) Do Echo.%%~nB-%%~nC
PopD
Gruß
LotPings
Version überarbeitet und getestet, sollte jetzt funktionieren
Hallo Tommy,
dazu müsstest du in Zeile 19 noch eine Ausgabeumleitung in eine Datei einbauen,
aber hey wir testen das doch gerade erst - hast du denn eine korrekte Ausgabe auf dem Bildschirm?
Gruß
LotPings
dazu müsstest du in Zeile 19 noch eine Ausgabeumleitung in eine Datei einbauen,
aber hey wir testen das doch gerade erst - hast du denn eine korrekte Ausgabe auf dem Bildschirm?
Gruß
LotPings
Habe die Batch jetzt bei mir getestet (in LW D:\ ) und etwas überarbeitet - hier klappt es soweit.
Änderungen siehe oben.
Gruß
LotPings
Änderungen siehe oben.
Gruß
LotPings
Zitat von @Philosoph:
So, nun bin ich auch mal daheim. Aber kann es dann doch nicht lassen weiter zu probieren.
Denn auch nachdem du dein Skript geändert hast, wird bei mir keine neue Textdatei mit den Kombinationen angelegt.
So, nun bin ich auch mal daheim. Aber kann es dann doch nicht lassen weiter zu probieren.
Denn auch nachdem du dein Skript geändert hast, wird bei mir keine neue Textdatei mit den Kombinationen angelegt.
Philosohen sind doch eigentlich Denker, da passt was nicht.
Solange du nicht gehen kannst - versuchen wir wir gar nicht erst zu laufen.
Ich sehe auch im Skript keine Anweisung, die das Ergebnis in eine Text-Datei umleitet.
die Pfade habe ich so übernommen. Mache ich da was falsch?
die Pfade habe ich so übernommen. Mache ich da was falsch?
HAST DU DENN INZWISCHEN EINE PASSENE BILDSCHIRMAUSGABE ?????????
Ich bin eigentlich diese Woche sehr zurückhaltend,aber du schaffts es bald das zu ändern
Gruß
LotPings
Ich habe mir nach deinen obigen Angaben eine Testumgebung zusammengestellt:
Mit der aktuellen obigen Batchversion erhalte ich diese Ausgabe:
Und wenn ICH dich richtig verstanden habe, entspricht das deinen Wünschen.
Um diese Ausgabe in eine Datei umzuleiten muss jetzt nur noch
gegen
getauscht werden.
Gruß
LotPings
18:03:27 +D:\Test\Projekt____________________
>dir /B/S/A
D:\Test\Projekt\geraete
D:\Test\Projekt\motive
D:\Test\Projekt\Philosoph.cmd
D:\Test\Projekt\geraete\Ordner3
D:\Test\Projekt\geraete\Ordner3\M1.jpeg
D:\Test\Projekt\motive\Ordner3
D:\Test\Projekt\motive\Ordner3\G2.jpeg
D:\Test\Projekt\motive\Ordner3\G3.jpg
D:\Test\Projekt\motive\Ordner3\G6.tif
D:\Test\Projekt\motive\Ordner3\G8.tif
Mit der aktuellen obigen Batchversion erhalte ich diese Ausgabe:
18:10:25 +D:\Test\Projekt____________________
>Philosoph.cmd
M1-G2
M1-G3
M1-G6
M1-G8
Habe fertig.
Drücken Sie eine beliebige Taste . . .
Um diese Ausgabe in eine Datei umzuleiten muss jetzt nur noch
Echo.%%~nB-%%~nC
gegen
>>"X:\Pfad\Datei.ext" Echo.%%~nB-%%~nC
getauscht werden.
Gruß
LotPings
Wenn ich dich da jetzt richtig verstehe sind mir da M G durcheinander geraten?
Grundsätzlich kannst du alle bereits ausgegebenen Motive in einer tempDatei festhalten und bei jedem erneuten Versuch checken ob bereits in der Temp enthalten.
Das verlangt einige Umstzellungen und verlangsamt das ganze auch, aber machbar.
Falls ich wieder Zeit und Lust habe .... jetzt wirds mir zu spät und zuviel.
Gruß
LotPings
Grundsätzlich kannst du alle bereits ausgegebenen Motive in einer tempDatei festhalten und bei jedem erneuten Versuch checken ob bereits in der Temp enthalten.
Das verlangt einige Umstzellungen und verlangsamt das ganze auch, aber machbar.
Falls ich wieder Zeit und Lust habe .... jetzt wirds mir zu spät und zuviel.
Gruß
LotPings