jazo27
Goto Top

Ordner nach Dateien durchsuchen, in Zielverzeichnis kopieren und umbenennen

Hallo Forums-Community!

Ich habe noch sehr wenig (bis gar keine) Erfahrung mit Batch-Programmierung, deswegen erhoffe ich mir hier Hilfe zu finden.

Folgendes würde ich gerne machen:

Ein Verzeichnis C:\Users\JaZo27\TestName inklusive allen
Unterordner
C:\Users\JaZo27\TestName\1234A,...,C:\Users\JaZo27\TestName\5678BC,...
mit den weiteren Unterordner
C:\Users\JaZo27\TestName\1234A\Projektname_1,...

nach einer Datei xyz.dat durchsuchen.

Diese Datei (sofern vorhanden) heisst in allen Unterordnern immer gleich.

Nun möchte ich die Datei in ein Zielverzeichnis kopieren und in der Form umbenennen, dass der Pfad ein Teil des neuen Namens ist:

Aus

xyz.dat in C:\Users\JaZo27\TestName\1234A\Projektname_1

soll also

1234A_Projektname_1_xyz.dat in C:\Users\JaZo27\ZielName

werden.


Ich habe die Suchfunktion schon benutzt, konnte allerdings mit den gefunden Beispielen und Infos nur bedingt etwas anfangen.

Danke für euer Bemühen.
Gruss JaZo27

Content-Key: 219525

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

Ausgedruckt am: 18.04.2024 um 23:04 Uhr

Mitglied: Budders
Budders 16.10.2013 aktualisiert um 11:38:32 Uhr
Goto Top
Hallo JaZo27,

Ausgeben kannst du die Dateinamen samt Pfad mit folgendem Befehl
for /R DeinOrdner %%a in (*.dat) do (
	echo %%a
)

mit der Variable %%a könntest du dann natürlich weiter arbeiten, aber ohne genaue Beispiele könnte ich da jetzt nur rum murksen und das möchte ich nicht.

MfG Budders
Mitglied: bastla
bastla 16.10.2013 um 16:03:11 Uhr
Goto Top
Hallo JaZo27 und willkommen im Forum!

Wenn ich Dich richtig verstanden habe, sollte das etwa so zu machen sein:
@echo off & setlocal
set "Datei=xyz.dat"  
set "Quelle=C:\Users\JaZo27\TestName"  
set "Ziel=C:\Users\JaZo27\ZielName"  

md "%Ziel%" 2>nul  
for /f "delims=" %%i in ('dir /s/b/a-d "%Quelle%\%Datei%"') do call :ProcessFile "%%i"  
pause
goto :eof

:ProcessFile
for %%a in ("%~1\..") do set "Projekt=%%~nxa"  
for %%a in ("%~1\..\..") do set "Kennzahl=%%~nxa"  
echo copy %1 "%Ziel%\%Kennzahl%_%Projekt%_%~nx1"  
goto :eof
Wegen des "echo" in Zeile 14 werden die Kopierbefehle vorerst nur angezeigt, aber noch nicht ausgeführt - wenn Du es entfernst, wird auch kopiert.

Grüße
bastla
Mitglied: JaZo27
JaZo27 17.10.2013 um 09:12:54 Uhr
Goto Top
Hallo bastla!

Vielen Dank für deinen Input, habs gerade ausprobiert, funktioniert wunderbar.

Sehr schön wie schnell und kompetent hier geholfen wird.

Gruss
JaZo27
Mitglied: Budders
Budders 17.10.2013 um 09:39:06 Uhr
Goto Top
Wenn die Frage erledigt ist bitte
Wie kann ich einen Beitrag als gelöst markieren?

face-smile