Selektierte Ordner auf Netzlaufwerk verschieben
Liebe Community,
Wir haben die Problemstellung, dass wir ein Optisches Analysesystem am laufen haben, das Bilder erstellt und in Verzeichnisse ablegt.
Die abgelegten Verzeichnisse liegen z.B. in "D:\AOI_Source" und beginnen mit 9* und Z* (z.B.99323 oder Z45345).
Alle Verzeichnisse älter als 2 Tage müssen jetzt auf 2 verschiedene Netzlaufwerke VERSCHOBEN werden.
Dies habe ich mit dem Lösungsansatz versucht:
[code]
REM Alle Ordner mit Zahlen (0-9) als Namensbeginn auf Netzshare verschieben...
FOR /L %%a IN (0,1,9) DO (
ForFiles /P "D:\AOI_Source" /M %%a* /D -2 /C "CMD /C if @isdir==TRUE Move @File \\AOI_Target\Numerical"
)
REM Alle Ordner mit Buchstaben als Namensbeginn auf Netzshare verschieben...
FOR %%i IN (Z) DO (
ForFiles /P "D:\AOI_Source" /M %%i* /D -2 /C "CMD /C if @isdir==TRUE Move @File \\AOI_Target\Alphabetical"
)
[/code]
Nun zum eigentlichen Problem - es funktioniert so nicht!
Sobald das Script nur auf D:\ laufen gelassen wird, läuft es anstandslos.
Wähle ich aber als Ziel ein Netzlaufwerk, so erhalte ich bei jedem zu kopierenden Ordner die Meldung "Kein Zugriff" und es wird nichts verschoben.
Da ist ech wo der Wurm drin und ich hoffe sehr, dass Ihr Cracks mir da weiterhelfen könnt.
Lieben Dank für Eure Unterstützung!
Mario
Wir haben die Problemstellung, dass wir ein Optisches Analysesystem am laufen haben, das Bilder erstellt und in Verzeichnisse ablegt.
Die abgelegten Verzeichnisse liegen z.B. in "D:\AOI_Source" und beginnen mit 9* und Z* (z.B.99323 oder Z45345).
Alle Verzeichnisse älter als 2 Tage müssen jetzt auf 2 verschiedene Netzlaufwerke VERSCHOBEN werden.
Dies habe ich mit dem Lösungsansatz versucht:
[code]
REM Alle Ordner mit Zahlen (0-9) als Namensbeginn auf Netzshare verschieben...
FOR /L %%a IN (0,1,9) DO (
ForFiles /P "D:\AOI_Source" /M %%a* /D -2 /C "CMD /C if @isdir==TRUE Move @File \\AOI_Target\Numerical"
)
REM Alle Ordner mit Buchstaben als Namensbeginn auf Netzshare verschieben...
FOR %%i IN (Z) DO (
ForFiles /P "D:\AOI_Source" /M %%i* /D -2 /C "CMD /C if @isdir==TRUE Move @File \\AOI_Target\Alphabetical"
)
[/code]
Nun zum eigentlichen Problem - es funktioniert so nicht!
Wähle ich aber als Ziel ein Netzlaufwerk, so erhalte ich bei jedem zu kopierenden Ordner die Meldung "Kein Zugriff" und es wird nichts verschoben.
Da ist ech wo der Wurm drin und ich hoffe sehr, dass Ihr Cracks mir da weiterhelfen könnt.
Lieben Dank für Eure Unterstützung!
Mario
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 429024
Url: https://administrator.de/forum/selektierte-ordner-auf-netzlaufwerk-verschieben-429024.html
Ausgedruckt am: 03.05.2025 um 00:05 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Biite Code Tags verwenden!
Warum nutzt du nicht Robocopy?
Gruß,
Peter
Biite Code Tags verwenden!
Wähle ich aber als Ziel ein Netzlaufwerk, so erhalte ich bei jedem zu kopierenden Ordner die Meldung "Kein Zugriff" und es wird nichts verschoben.
Hat der Benutzer der das Skript laufen lässt dort irgendwelche erlaubten Rechte? Wird das Skript in einen anderen Benutzerkontext ausgeführt?Warum nutzt du nicht Robocopy?
Gruß,
Peter
Hallo,
https://www.tecchannel.de/a/robocopy-daten-schnell-und-einfach-unter-win ...
https://de.wikibooks.org/wiki/Datensicherung/_Werkzeuge/_Kopieren/_ROBOC ...
https://www.windowspro.de/wolfgang-sommergut/die-wichtigsten-befehle-von ...
Und wer es braucht kann über zahllose GUI implemtierungen sein Robocopy auch mit ner Maus rumschubsen
Gruß,
Peter
Zitat von @MastaMagoo:
Ja, der Benutzer hat volle Rechte. Ich hatte vergessen zu erwähnen, dass der Rechner zwar in der Domäne ist, der Useraccount aber lokal ist.
Und dieser Lokale Benutzer ist auch in deiner Domäne bekannt und hat das gleiche Passwort (also als Benutzer angelegt)?Ja, der Benutzer hat volle Rechte. Ich hatte vergessen zu erwähnen, dass der Rechner zwar in der Domäne ist, der Useraccount aber lokal ist.
Das kommt daher, dass die Herstellerfirma dieses Gerätes es nicht fertig gebracht hat, die Software in C:\Programme zu installieren, sondern diese aus einem Unterverzeichnis im Profil des Users "AOI" läuft.
Wo Ist das Problem? Ein DomänenBenutzer kann auch Software verwenden die in ein anderen Pfad liegen, oder nicht? Dazu muss nicht zwingend der Rechner aus der Domäne genommen werden.Es ändert sich aber auch nichts, wenn ich die Rechte auf "Jeder-Full" stelle.
Fragt sich nur wo du diese Rechte stellstWegen Robocopy - meinst du Robocopy anstatt des Move oder alles mit Robocopy anstatt mit Forfiles?
Anstelle deines kompletten Skripts sind das nur zwei Zeilen (Dem Ziel wegen). Ein Róbocopy /? sagt dir in ein Kommandozeilenfenster mehr neben der tausendfachen Dokumentation im Internet.https://www.tecchannel.de/a/robocopy-daten-schnell-und-einfach-unter-win ...
https://de.wikibooks.org/wiki/Datensicherung/_Werkzeuge/_Kopieren/_ROBOC ...
https://www.windowspro.de/wolfgang-sommergut/die-wichtigsten-befehle-von ...
Und wer es braucht kann über zahllose GUI implemtierungen sein Robocopy auch mit ner Maus rumschubsen
Gruß,
Peter
Hallo,
Beispiel Batch Datei Test2.bat
Die Dateisektion ist hier einfach ein Z*.*. Wenn das nicht reicht kannst du auch Reguläre Ausdrücke einbauen z.B.
https://plusontech.com/2018/09/30/regex-samples-robocopy/
Gruß,
Peter
Zitat von @MastaMagoo:
Die Software, die die Herstellerfirma installiert hat, läuft nur aus dem Lokalen Userverzeichnis
Das ist sehr Blöd das ihr eine Software verwenden wollt die noch nicht mal Benutzer kennt. Baujar 1970?Die Software, die die Herstellerfirma installiert hat, läuft nur aus dem Lokalen Userverzeichnis
und wenn ich mich als Domänen-User einlogge, läuft sie nicht, da beim Login des lokalen Users noch Scripts laufen.
Ist klar. Aber hattest du noch nicht gesagt das diese Software so Brutal gestrickt ist.Ich kann aber nichts an der Software oder dem Ausführungsort ändern, da das von der Herstellerfirma unterbunden wurde und vertraglich auch nicht gemacht werden darf.
BrutalDie Rechte habe ich an Quelle und Ziel gesetzt - hat sich aber nichts geändert wegen "Zugriff verweigert."
Na klar, du musst in deiner Domäne auf deine DC oder mitgliedsserver dich auch als Domänenbenutzer anmelden und der braucht auch die nötigen Rechte. Da Robocopy keine möglichkeit bietet sich als anderer Benutzer anzumelden, wie auch die meisten anderen Programme, nutze eine Batchdatei die du per rechte Maustaste und ausführen als startest, oder du nutzt run as oder machst das per Powershell oder oder oder. Da gibt es viele Wege die dir offenstehen. Die Batchdatei kannst du auch per Taskmanager (Aufgabenplaner) nutzen und ebenfalls dort einen anderen ausführenden (Domänenbenutzer) hinterlegen. Du kannst auch ein Explorer Fenster als Domänenbenutzer starten und es händisch machen und und und.Beispiel Batch Datei Test2.bat
robocopy "D:\AOI_Source" "\\Server\Freigabe\AOI_Target\Numerical" /IF:Z*.* /R:3 /W:10 /log+:"C:\Temp\Liste.txt" /L
https://plusontech.com/2018/09/30/regex-samples-robocopy/
Gruß,
Peter
Hallo,
Aber das hätte dir auffallen müssen wenn du es ja offensichtlich hinbekommen hast zu erkennen was /L bei Robocopy bedeuet und du dies entfernt hast.
Dir ist aber schon klar das ein Robocopy ein Obustes Kopierprogramm ist und eigentlich nur auf Ordner und seine Inhalte ausgelegt ist. Es ist manchmal schon etwas schwierig etwas auszuschliessen /XF und /IF was in einen unterordner aber Kopiert werden soll. Auch kann keiner Dateiliste oder Ordnerliste übergeben werden. Da hilft dann etwas weiter eine RCJ Datei zu erstellen /save und mittels robocopy /JOB:Dateiname und diese RCJ Datei anzupassen.
Aber das /L ist erstmal ein Pflicht und schauen was ausgegeben wird, notfalls mit /TEE und gleichzeitig Umleiten in einer Datei und auf den Bildschirm darstellen hilft schon um Fehler im Vorfeld zu erkennen. Ein genaues was will ich und eine genaue wie sind meine Daten angeordnet sind hier mit Parameter /L von Vorteil
https://ss64.com/nt/robocopy.html
Gruß,
Peter
Zitat von @MastaMagoo:
Leider ist die Herstellerfirma genauso genial wie blöd und hat alle Pfade hardcoded, so dass ich da auch nichts ändern kann.
Scheint noch eine Firma zu sein welche im letzten Jahrtausend feststecktLeider ist die Herstellerfirma genauso genial wie blöd und hat alle Pfade hardcoded, so dass ich da auch nichts ändern kann.
einzig die Filterfunktion klappt so noch nicht. Mit Z*.* werden trotzdem alle Verzeichnisse verschoben - nicht nur jene, die mit Z* anfangen...
Sorry, hatte ein /IF vergessen. Oben korrigiert.Aber das hätte dir auffallen müssen wenn du es ja offensichtlich hinbekommen hast zu erkennen was /L bei Robocopy bedeuet und du dies entfernt hast.
Dir ist aber schon klar das ein Robocopy ein Obustes Kopierprogramm ist und eigentlich nur auf Ordner und seine Inhalte ausgelegt ist. Es ist manchmal schon etwas schwierig etwas auszuschliessen /XF und /IF was in einen unterordner aber Kopiert werden soll. Auch kann keiner Dateiliste oder Ordnerliste übergeben werden. Da hilft dann etwas weiter eine RCJ Datei zu erstellen /save und mittels robocopy /JOB:Dateiname und diese RCJ Datei anzupassen.
Aber das /L ist erstmal ein Pflicht und schauen was ausgegeben wird, notfalls mit /TEE und gleichzeitig Umleiten in einer Datei und auf den Bildschirm darstellen hilft schon um Fehler im Vorfeld zu erkennen. Ein genaues was will ich und eine genaue wie sind meine Daten angeordnet sind hier mit Parameter /L von Vorteil
https://ss64.com/nt/robocopy.html
Gruß,
Peter