Gleichnamige Dateien in verschiedenen Ordnern, in einen Ordner kopieren und umbennen
Guten morgen alle zu sammen,
ich habe folgendes problem, wie schon im Titel gesagt möchte ich gleichnamige dateien aus mehreren Ordner kopieren und in ein einfügen. Da die dateien den gleichen Namen haben über schleifen sie sich (ist logisch) immer.
hier das was ich hab:
for /F %%i in (test.bak) do @for /f %%x in (namen.bak) do xcopy "%%i" "C:\test\%%x.jpg"
zuerst lese ich die test.bak aus, in dieser datei sind die jeweiligen pfade der dateien drinn :
c:\11\831\bild.jpg
c:\11\832\bild.jpg
c:\11\833\bild.jpg
dann wollte ich die namen in dem falle sind es zahlen aus der namen.bak auslesen, aber es wird alles ausgelesen aus der namen.bak und und dann wird erst der nächste pfad aus der test.bak genommen, also habe ich eben immer das gleiche bild zb. 300 mal mit verschiedenen dateinamen....
habt ihr ne idee wie ich ein pfad (aus der test.bak) ,einen namen aus der namen.bak nehem kann und dann kopieren... usw also nach und nach die beiden dateien auslesen
noch als Information ich nutze Win Xp Sp2
ich hoffe ihr könnt mir helfen
ich habe folgendes problem, wie schon im Titel gesagt möchte ich gleichnamige dateien aus mehreren Ordner kopieren und in ein einfügen. Da die dateien den gleichen Namen haben über schleifen sie sich (ist logisch) immer.
hier das was ich hab:
for /F %%i in (test.bak) do @for /f %%x in (namen.bak) do xcopy "%%i" "C:\test\%%x.jpg"
zuerst lese ich die test.bak aus, in dieser datei sind die jeweiligen pfade der dateien drinn :
c:\11\831\bild.jpg
c:\11\832\bild.jpg
c:\11\833\bild.jpg
dann wollte ich die namen in dem falle sind es zahlen aus der namen.bak auslesen, aber es wird alles ausgelesen aus der namen.bak und und dann wird erst der nächste pfad aus der test.bak genommen, also habe ich eben immer das gleiche bild zb. 300 mal mit verschiedenen dateinamen....
habt ihr ne idee wie ich ein pfad (aus der test.bak) ,einen namen aus der namen.bak nehem kann und dann kopieren... usw also nach und nach die beiden dateien auslesen
noch als Information ich nutze Win Xp Sp2
ich hoffe ihr könnt mir helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102763
Url: https://administrator.de/forum/gleichnamige-dateien-in-verschiedenen-ordnern-in-einen-ordner-kopieren-und-umbennen-102763.html
Ausgedruckt am: 23.12.2024 um 11:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo plaaner und willkommen im Forum!
Das sollte etwa so zu machen sein:
Das "echo" vor dem "copy" (was hätte aus Deiner Sicht für "xcopy" gesprochen?) soll das Testen vereinfachen, da so die "copy"-Befehle nur angezeigt, aber noch nicht ausgeführt werden.
Grüße
bastla
[Edit] Zweites Prozentzeichen bei findstr /b "%%i" nachgetragen [/Edit]
Das sollte etwa so zu machen sein:
for /F "tokens=1* delims=:" %%i in ('findstr /n "^" test.bak') do for /f "tokens=1* delims=:" %%x in ('findstr /n "^" namen.bak^|findstr /b "%%i:"') do echo copy "%%j" "C:\test\%%y.jpg"
Grüße
bastla
[Edit] Zweites Prozentzeichen bei findstr /b "%%i" nachgetragen [/Edit]
Moin plaaner,
willkommen im Forum.
<OT>
WTF ist an dem Wort umbenennen so schwierig und warum sagt ihr dann nicht lieber umbenamsen ???....
</OT>
Grüße
Biber
willkommen im Forum.
<OT>
Gleichnamige Dateien in verschiedenen Ordnern, in einen Ordner kopieren und umbennen
Die übliche Frage an (fast) alle PosterInnen eines derartigen BeitragsWTF ist an dem Wort umbenennen so schwierig und warum sagt ihr dann nicht lieber umbenamsen ???....
</OT>
Grüße
Biber
Hallo plaaner!
sollte mit den Testdaten von oben folgende Ausgabe erzeugen:
Mit "for /f" wird jede Zeile zerlegt in die Zeilennummer (%%i) und den Rest (%%j = Pfad).
Das Gleiche wird mit den Namen gemacht, nur dass hier, nachdem das erste "findstr" die Zeilennummern erzeugt hat, zusätzlich nach der Nummer (%%i - das zweite Prozentzeichen hat leider oben gefehlt ) aus der "test.bak" gefiltert wird - mit "/b" und der Angabe des ":" sollte sichergestellt sein, dass nur die passende Zeile aus "namen.bak" aus der zweiten "for"-Schleife herauskommt (jetzt mit der Nummer - die nicht weiter interessiert - als %%x und dem Namen als %%y).
Grüße
bastla
wie nimmst du findstr ?
Das kannst Du ja einmal einzeln nachvollziehen (direkt an der Kommandozeile):findstr /n "^" test.bak
1:c:\11\831\bild.jpg
2:c:\11\832\bild.jpg
3:c:\11\833\bild.jpg
Das Gleiche wird mit den Namen gemacht, nur dass hier, nachdem das erste "findstr" die Zeilennummern erzeugt hat, zusätzlich nach der Nummer (%%i - das zweite Prozentzeichen hat leider oben gefehlt ) aus der "test.bak" gefiltert wird - mit "/b" und der Angabe des ":" sollte sichergestellt sein, dass nur die passende Zeile aus "namen.bak" aus der zweiten "for"-Schleife herauskommt (jetzt mit der Nummer - die nicht weiter interessiert - als %%x und dem Namen als %%y).
Grüße
bastla
Hallo plaaner!
Grüße
bastla
ich möchte nichts neues eröffnen deswegen schreibe ich hier rein
Ist nicht die allerbeste Idee - hier lesen vermutlich nicht viele mit, und falls wir eine Lösung finden, wird das Finden dieser Lösung für andere, die sie auch brauchen könnten, in diesem Thread vermutlich auch nicht ganz einfach .......... find "variable"
kann ohnehin nur klappen, wenn Du die Variable zwischen %-Zeichen setzt, also:....... find "%variable%"
morgen schreib ich es nochmal etwas detailierter wie ich das find nutze/nutzen möchte
... und dann vielleicht doch besser in einen neuen Beitrag.Grüße
bastla