andibar
Goto Top

Kopier bat anhand einer Liste (Netzwerk mit Unterordnern)

Hallo,

ich bin Anfänger und habe mir eine bat zusammengeschustert, die mir aus einem Netzwerkordner mit vielen Unterordnern alle Dateientypen mit dem gleichen Namen in einen Ordner kopiert. Die Dateien haben alle das Format nk-xxxx-y-z und die Datei ist in einem Netzwerkordner mit dem Unterordner nk abgelegt. Die bat soll nun die Dateien nk-xxxx-y-z.pdf, nk-xxxx-y-z.dwg, nk-xxxx-y-z.step und nk-xxxx-y-z.dxf kopieren, falls vorhanden. Der Code ist im Moment wie folgt:

[CODE]

@echo off
:start
echo.
echo.
echo Geben Sie den Nummernkreis ein:
set /p nummernkreis=
echo.
echo.
echo Geben Sie den Dateinamen ein:
set /p name=
ROBOCOPY T:\D\C\M\%nummernkreis% C:\Users\%userName%\Desktop\Copyfolder %name%.pdf %name%.step %name%.dwg %name%.dxf /NJS /NJH
goto start

[/CODE]

1. Da die Dateien in den jeweiligen Unterordnern mit dem Namen nk-... abgelegt sind, habe ich da eine extra Abfrage reingehauen. Das war mein Weg, um die Dateien in den jeweiligen Unterordnern zu finden (Datei nk-xxx-y-z ist im Unterordner T:\D\C\M\nk). Ich habe auch einfach die Robocopy mal für jeden Unterordner laufen lassen, das dauerte mir aber dann zu lange für den Kopiervorgang. Wie könnte ich die nummernkreis= Abfrage umgehen, dass ich den Namen nur einmal eingeben muss und er den Nummernkreis (nk im Dateiformat) rauszieht?

2. Wäre es möglich aus einer .txt Datei (oder anderem Dateiformat ?) den Namen der zu kopierenden Datei auszulesen,zusammenzusetzen und dann alle Dateien zu kopieren? Hier der Aufbau der BGSL.txt, dabei sollten Spalten 2 und 3 zusammengefügt werden. Ich versuche das mal darzustellen:

10 66-1860-0 0 Tr3 1 ST 18
20 66-1861-0 0 Tr2 1 ST 18
30 27-0437-0 1 Pu3 2 ST 09
40 80-0393-2 0 Sc12 20 ST 02
50 80-0049-5 0 Se2 30 ST 02
60 20-3041-0 2 Ha6 1 ST 49
70 80-0365-3 0 Si1 2 ST 09
80 23-6489-0 2 Ge4 1 ST 18
90 23-6490-0 1 Ge2 1 ST 18
100 20-3042-0 3 Di3 8 ST 49

Spalte 2 (nk-xxxx-y) und Spalte 3(z) zusammenfügen > nk-xxxx-y-z wäre für die hier zu kopierende Dateien:

66-1860-0-0
66-1861-0-0
27-0437-0-1
...
20-3042-0-3

Habe schon was in diversen Foren gefunden, bin aber zu doof das auf mich anzupassen. Könnte mir jemand helfen?

Gruß und danke schon im Vorraus für eure Bemühungen,
Arit

Content-ID: 470930

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

Ausgedruckt am: 23.11.2024 um 14:11 Uhr

Friemler
Friemler 10.07.2019 um 22:54:50 Uhr
Goto Top
Hallo @andibar,

teste mal folgendes:

@echo off & setlocal

set "SrcDir=T:\D\C\M"  
set "DstDir=%UserProfile%\Desktop\CopyFolder"  
set "DataFile=.\BGSL.txt"  

pushd "%~dp0"  

for /f "usebackq tokens=2,3" %%a in ("%DataFile%") do (  
  for /f "delims=-" %%z in ("%%~a") do (  
    robocopy "%SrcDir%\%%~z" "%DstDir%" "%%~a-%%~b.pdf" "%%~a-%%~b.step" "%%~a-%%~b.dwg" "%%~a-%%~b.dxf" /NJS /NJH  
  )
)

popd

Die Zeilen 3 bis 5 musst Du ggf. anpassen.

Siehe auch mein Tutorial zur FOR-Schleife.

Grüße
Friemler