mastamagoo
Goto Top

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! face-smile 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

Content-Key: 429024

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

Printed on: April 24, 2024 at 14:04 o'clock

Member: Pjordorf
Pjordorf Mar 15, 2019 at 11:11:09 (UTC)
Goto Top
Hallo,

Zitat von @MastaMagoo:
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
Member: MastaMagoo
MastaMagoo Mar 15, 2019 at 11:50:43 (UTC)
Goto Top
Hallo Peter

Vielen Dank für deine schnelle Reaktion.
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.

Es ändert sich aber auch nichts, wenn ich die Rechte auf "Jeder-Full" stelle.

Wegen Robocopy - meinst du Robocopy anstatt des Move oder alles mit Robocopy anstatt mit Forfiles?

Besten Dank!
Mario
Member: Pjordorf
Pjordorf Mar 15, 2019 at 12:03:23 (UTC)
Goto Top
Hallo,

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)?

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 stellst

Wegen 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
Member: MastaMagoo
MastaMagoo Mar 15, 2019 at 14:00:09 (UTC)
Goto Top
Lieber Peter,

Der User hat ein gleiches Domänenkonto mit gleichem Passwort.

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. 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.

Mit Robocopy habe ich es noch nicht versucht, da ich nicht wusste, wie ich das korrekt verschachteln muss.

Die Rechte habe ich an Quelle und Ziel gesetzt - hat sich aber nichts geändert wegen "Zugriff verweigert."

Herzlichen Dank für deine Ratschläge. Ich schätze das sehr und lerne auch gerne dazu.

Gruss,
Mario
Member: Pjordorf
Pjordorf Mar 15, 2019 updated at 17:10:48 (UTC)
Goto Top
Hallo,

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?

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.
Brutal

Die 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  
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
Member: MastaMagoo
MastaMagoo Mar 15, 2019 at 16:49:32 (UTC)
Goto Top
Vielen Dank Peter für deine Geduld.

Ich werde mich über's Wochenende mal ganz ausführlich damit beschäftigen. Leider ist die Herstellerfirma genauso genial wie blöd und hat alle Pfade hardcoded, so dass ich da auch nichts ändern kann.
Hab jetzt ein wenig damit herumprobiert und es scheint prinzipiell zu funktionieren, einzig die Filterfunktion klappt so noch nicht. Mit Z*.* werden trotzdem alle Verzeichnisse verschoben - nicht nur jene, die mit Z* anfangen...

Herzlichen Dank für die tollen Tips!

Mario
Member: Pjordorf
Solution Pjordorf Mar 15, 2019 at 17:32:53 (UTC)
Goto Top
Hallo,

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 feststeckt

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. face-smile
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
Member: MastaMagoo
MastaMagoo Mar 19, 2019 at 19:26:18 (UTC)
Goto Top
Lieber Peter,

Herzlichen Dank!
Mit dem korrigierten Hinweis (ich hatte das am Wochenende tatsächlich noch bemerkt, nachdem ich die Doku von Robocopy weitestgehend studiert hatte) klappte das Kopieren der Ordner so, wie ich das wollte. Jetzt habe ich einfach 2 Scripte gemacht, die ich je nach Bedarf starten kann.

Vielen herzlichen Dank - da hatte ich Anfangs wirklich Tomaten auf den Augen!

Beste Grüsse
Mario