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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 470930
Url: https://administrator.de/contentid/470930
Ausgedruckt am: 23.11.2024 um 14:11 Uhr
1 Kommentar
Hallo @andibar,
teste mal folgendes:
Die Zeilen 3 bis 5 musst Du ggf. anpassen.
Siehe auch mein Tutorial zur FOR-Schleife.
Grüße
Friemler
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