Datei an vielen Standorte verteilen

dinoldo

Cadet 4th Year
Registriert
Juni 2017
Beiträge
104
Hallo Leute,

ich suche nach einer Lösung die im Windows Explorer markierte Datei per Batch an viele anderen Standorte zu kopieren.
Im Beispiel habe ich die Datei "P:\Müller Technik GmbH\DE-PAS07\Standards\Definitionen\Klassen\2019\Struktur.xlsx" markiert.

In einer Liste habe ich alle Standorte bzw den Teil vor dem dritten Backslash eingetragen:
Code:
P:\Müller Technik GmbH\DE-PAD01
P:\Müller Technik GmbH\FR-BIE16
P:\Müller Technik GmbH\DE-KAR04
P:\Müller Technik GmbH\AT-TRE01
P:\Müller Technik GmbH\DE-BER02
P:\Müller Technik GmbH\EN-HAT16
P:\Müller Technik GmbH\DE-ETT01
P:\Müller Technik GmbH\DE-GET01
P:\Müller Technik GmbH\DE-HAM01
P:\Müller Technik GmbH\DE-LUE16
P:\Müller Technik GmbH\DE-JUT02
P:\Müller Technik GmbH\DE-WUE03
P:\Müller Technik GmbH\DE-PAP05
P:\Müller Technik GmbH\HR-MUC12
P:\Müller Technik GmbH\DE-NIS01
P:\Müller Technik GmbH\DE-ZET07
P:\Müller Technik GmbH\DE-REG05
P:\Schneider Technik\AT-WIE09

Evtl. kann man die markierte Datei auf die CMD-Datei ziehen und der Kopiervorgang wird erledigt. Hab ihr für mich eine Idee, wie ich dies bitte lösen kann, um zeitaufwendige Anpassung des Scripts zu vermeiden.

Bis jetzt habe ich es wie folgt erfolgreich gelöst. Dabei müsste ich viele Datei pflegen, wenn es um Kopieren anderer Dateien ging. ;-)
Code:
set FILE=P:\Müller Technik GmbH\DE-PAS07\Standards\Definitionen\Klassen\2019\Struktur.xlsx

xcopy "%FILE%" "P:\Müller Technik GmbH\DE-PAD01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\FR-BIE16\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-KAR04\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\AT-TRE01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-BER02\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\EN-HAT16\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-ETT01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-GET01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-HAM01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-LUE16\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-JUT02\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-WUE03\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-PAP05\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\HR-MUC12\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-NIS01\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-ZET07\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Müller Technik GmbH\DE-REG05\Standards\Definitionen\Klassen\2019\" /Y
xcopy "%FILE%" "P:\Schneider Technik\AT-WIE09\Standards\Definitionen\Klassen\2019\" /Y

Besten Dank im Voraus...
 
Wenn du das Dokument per Drag and Drop in die Batch ziehst ist der Komplette Pfad und Name zu der Datei unter dem Parameter %1 zugreifbar

Sprich es sollte reichen wenn du aus "%FILE%" ein %1 machst dann ohne die ""

Siehe auch
https://www.robvanderwoude.com/parameters.php

Dies funktioniert natürlich nur wenn du immer nur 1 Datei kopierst
 
Code:
FILE="/Müller Technik GmbH/DE-PAS07/Standards/Definitionen/Klassen/2019/Struktur.xlsx"
for i in DE-PAD01 FR-BIE16 DE-KAR04 AT-TRE01 DE-BER02 EN-HAT16 DE-ETT01 DE-GET01 DE-HAM01 DE-LUE16 DE-JUT02 DE-WUE03 DE-PAP05 HR-MUC12 DE-NIS01 DE-ZET07 DE-REG05 AT-WIE09; do
   cp -f "${FILE}" "/Müller Technik GmbH/${i}/Standards/Definitionen/Klassen/2019"
done

Eine FOR-Schleife mit Array tut's auch.
 
@stage: Wenn ich x-beliebige Datei markiere und per Drag and Drop auf immer dieselbe Batch ziehe, dann müsste ich zumindest noch den Teil nach dem dritten Backslash des Zielpfades (siehe unten in Rot) dymanisch haben oder?

xcopy %1 "P:\Müller Technik GmbH\DE-PAD01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\FR-BIE16\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-KAR04\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\AT-TRE01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-BER02\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\EN-HAT16\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-ETT01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-GET01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-HAM01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-LUE16\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-JUT02\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-WUE03\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-PAP05\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\HR-MUC12\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-NIS01\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-ZET07\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Müller Technik GmbH\DE-REG05\Standards\Definitionen\Klassen\2019\" /Y
xcopy %1 "P:\Schneider Technik\AT-WIE09\Standards\Definitionen\Klassen\2019\" /Y
 
dinoldo schrieb:
dann müsste ich zumindest noch den Teil nach dem dritten Backslash des Zielpfades (siehe unten in Rot) dymanisch haben oder?

Müsstest Du oder willst Du? Warum sollte das "dynamisch" sein?
 
Hallo Twostone,

zunächst danke für rasche Beantwortung. 👍

Wenn ich eine dieselbe Batch-Datei nutzen möchte, ohne dies jedes Mal zu verändern, muss der Teil nach dem dritten Bachslah in der Batch-Datei, wo ich die Zieldatei per Drag & Drap draufziehe auch variabel sein.

Fall 1: ich markiere die Datei P:\Müller Technik GmbH\DE-PAD01\Standards\Definitionen\Klassen\2019\Struktur.xlsx dann soll diese auch in ....Standards\Definitionen\Klassen\2019 jeweiligen Standorts kopiert werden.

Fall 2: ich markiere die Datei P:\Müller Technik GmbH\DE-TES01\Konfigurationen\nova\version 17.1\db\usermask\matrix.cfg dann soll diese auch in ....Konfigurationen\nova\version 17.1\db\usermask jeweiligen Standorts kopiert werden.

usw.

Das heißt der Teil nach dem dritten Bachslash von der Zeildatei muss in der Batch-Datei dynamisch sprich aus der Zieldatei abgeleitet werden.
 
Du kannst zwar mit Parametern auf der CLI arbeiten (analog zu %1 gibt es auch %2, %3, usw), aber woher soll das script wissen, was Du willst, wenn Du nur eine Datei da drauf ziehst.

Alternativ gibt es natürlich die Möglichkeit einer relationalen Zuordnung gemäß Dateinamen oder Teil eines Dateinamens, sprich wenn Datei "xy" heißt, kommt sie nach "a", heißt sie "yx", kommt sie nach b. Gerade aber wenn man mit Teilen von Dateinamen arbeitet, kann das auch zu Problemen führen.

Per drag&drop kannst Du keine weiteren Parameter als den Dateinamen übergeben.
 
Hallo Zusammen,

ich habe es jetzt den Code in der CMD-Datei jetzt zwar ohne Drag & Drop etwas dynamischer gestaltet und bin fast zufrieden damit:
Code:
@echo off
color 17

set FILE_01=P:\Müller Technik GmbH\DE-PAD01\Standards\Definitionen\Klassen\2019\Struktur.xlsx
set FILE_02=P:\Müller Technik GmbH\DE-TES01\Konfigurationen\nova\version 17.1\db\usermask\matrix.cfg
set FILE_03=
set FILE_04=
set FILE_05=

for %%i in ("%FILE%") do (
set Pfad=%%~di%%~pi
)
for /f "tokens=1,2,3* delims=\" %%a in ("%Pfad%") do (
    set "R_PATH=%%d"
)

xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-PAD01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\FR-BIE16\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-KAR04\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\AT-TRE01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-BER02\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\EN-HAT16\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-ETT01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-GET01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-HAM01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-LUE16\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-JUT02\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-WUE03\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-PAP05\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\HR-MUC12\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-NIS01\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-ZET07\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Müller Technik GmbH\DE-REG05\%R_PATH%" /Y
xcopy "%FILE_01%" "P:\Schneider Technik\AT-WIE09\%R_PATH%" /Y

xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-PAD01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\FR-BIE16\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-KAR04\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\AT-TRE01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-BER02\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\EN-HAT16\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-ETT01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-GET01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-HAM01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-LUE16\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-JUT02\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-WUE03\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-PAP05\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\HR-MUC12\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-NIS01\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-ZET07\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Müller Technik GmbH\DE-REG05\%R_PATH%" /Y
xcopy "%FILE_02%" "P:\Schneider Technik\AT-WIE09\%R_PATH%" /Y

usw.
usw.

Ich habe im Code die Möglichkeit 5 Datei einzutragen, die kopiert werden sollen.

Meine Frage:
Lässt sich der Code noch von zeilenher etwas optimieren? Vor allem im unteren Teil wo ich für jede Datei den alle Standorte aufführen muss...
 

Ähnliche Themen

Zurück
Oben