kohlfurther
Goto Top

Eigene Dateien und Ordner, die nicht genau benannt werden können per Batch-Befehl verschieben

Hallo zusammen!

Ich beginne gerade damit mich mit dem Feld der "einfachen Batch-Programmierung" zu beschäftigen.

Ich arbeite im "First-Level-Support Computer und Netze" in einer grossen Verwaltung, und betreue dort die Endnutzer an Ihren Arbeitsplätzen... derzeit noch WinXP über Windows-Terminalserver-Technik...
Unsere administrativen Möglichkeiten sind begrenzt, da wir für die Software-Entwicklung eine eigene Behörde betreiben!

Trotzdem ist es ab und an hilfreich kleine Programme zu schreiben, die meist mit Datei-Verwaltung und -Ablageorten in Zusammenhang stehen!

Daher heute hier meine erste Frage zum Thema "Einstieg in die Batch-Programmierung"!

Ich freue mich darauf, hier Hilfe zu erhalten!

Unseren Nutzern steht jeweils ein Teilbereich von einem Fileserver (sogenanntes "Heimat-Laufwerk" als Netzlaufwerk eingebunden)zu, auf dem der jeweilige Nutzer die Möglichkeit hat eigene Dateien zu speichern.
Ausserdem werden hier Systemdateien und -ordner abgelegt, die für Programme seines eigenen Benutzerprofils erforderlich sind! Diese werden automatisch systemseitig angelegt und mit den erforderlichen Daten gefüllt!

Eine Reihe von Nutzern hat aktuell ein "neues Heimatlaufwerk" erhalten...
Die Daten des "alten Heimatlaufwerks" sind nun in einem Unterverzeichnis des "neuen Heimatlaufwerks" gespeichert!

Ich möchte den Nutzern nun die Möglichkeit bieten, die persönlichen Dateien und Unterordner, die Sie im "alten Heimatlaufwerk" abgelegt haben recht einfach auf das "neue Heimatlaufwerk" zu verschieben...

Möglich wäre das doch über den XCOPY-Befehl in einer Batch-Datei?!

Problem hierbei ist jedoch, dass die Ablage der persönlichen Dateien und Ordner ohne festgeschriebene Struktur erfolgen kann und meist erfolgt ist, so dass KEIN namensgleicher Unterordner auf dem "alten Heimatlaufwerk" bestehen muss bzw. besteht in dem alle persönlichen Daten abgelegt wären, den man in einer Batchdatei benennen könnte...

Weiter ist zu bedenken, dass es bezogen auf die Systemdateien auf altem und neuem Heimatlaufwerk identische Ordner und Dateien gibt, von denen jeweils die Ordner und Dateien vom nun neuen Heimatlaufwerk erhalten bleiben müssen!

Kurz gesagt:
Ich suche eine Möglichkeit, NUR die persönlichen Dateien und Unterordner zu verschieben!

MEINE ERSTE IDEE:
Ich möchte den Batch-Befehl "XCOPY /d" (ohne Angabe eines Datums) verwenden!

Dadurch sollten zunächst einmal die Systemdateien und -ordner vom alten Heimatlaufwerk (Quelle) NICHT verschoben werden, da die namensgleichen Systemdateien und -ordner auf dem neuen Heimatlaufwerk (Ziel) neuerem Datums sein müssten (dies habe ich noch nicht geprüft; müsste aber so sein)!
Ausserdem sollten alle vom Nutzer selbst erstellten Dateien und Ordner vom alten Heimatlaufwerk (Quelle) ins neue Heimatlaufwerk (Ziel) verschoben werden können, da diese im "Ziel" noch nicht vorhanden sind und damit nicht neuerem Datums sein können!


Nun aber meine Frage an die Community hier:
Ist das ein praktikabeler Ansatz oder habe ich einen Denkfehler?
Bzw. gibt es eine bessere Alternative für das was ich vor habe?

Dabei muss ich nochmal betonen, dass ich nur eingeschränkte administrative Rechte am System habe und daher wahrscheinlich lediglich über "Batch-Programme" zum Ziel kommen kann!

Nun bin ich gespannt, ob ihr Ideen habt und ob ich diese umsetzen kann...
Vielen Dank vorab für euere Mühen...

LG vom
Kohlfurther

Content-Key: 204138

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

Printed on: April 25, 2024 at 08:04 o'clock

Member: ThePinky777
ThePinky777 Mar 29, 2013 updated at 15:53:26 (UTC)
Goto Top
schau dir mal das Tool ROBOCOPY.exe an, eventuell bietet das Möglichkeiten die dich weiterbringen.
einfach mal googel´n
Member: kohlfurther
kohlfurther Mar 29, 2013 at 17:09:07 (UTC)
Goto Top
Hallo Pinky...

...danke für deine schnelle Antwort!
Ich werde mir das Programm mal am heimischen Rechner anschauen und ein bisschen ausprobieren...

Allerdings befürchte ich, dass ich das so am Arbeitsplatz nicht einrichten kann, weil mir bzw. uns auch Installationsrechte fehlen bzw. ein selbstständiges Verwenden einer EXE-Datei auf unserem System nicht gewollt ist und auch zu Problemen und Nachfragen führen kann...

Daher meine Idee, das über Batch umzusetzen, weil die Ausführung dieser Dateien toleriert wird...
Bei wirklichen Anwendungen sieht das anders aus... LEIDER... face-sad(

Trotzdem zunächst danke schön... :D

Ansonsten:
Weitere Ideen hier?

LG
Kohlfurther
Member: Endoro
Endoro Mar 29, 2013 at 19:16:05 (UTC)
Goto Top
Hallo kohlfurther,

ehrlich gesagt weiss ich nicht wie man "Dateien und Ordner, die nicht genau benannt werden können per Batch-Befehl verschieben" kann. Wie machst du es denn manuell?


bb
Member: kohlfurther
kohlfurther Mar 31, 2013 at 10:25:23 (UTC)
Goto Top
Guten Morgen :D

Wie schon beschrieben ist eben das Hauptproblem, dass es in unserer Verwaltung keine Regelung gibt, die zum Beispiel aussagt, dass private bzw. eigene Dateien auf dem Heimatlaufwerk in einen bestimmten Unterordner gespeichert werden können...

Wenn es per Automation nicht funktioniert, muss sich halt jeder Nutzer selbst ansehen, welche alten Daten er auf sein neues Laufwerk "mitnehmen" will und die Dateien einfach selbst händisch über den Windows-Explorer verschieben!
Der Nutzer selbst weiss ja, welche Ordner und Dateien seine eigenen sind...

Unsere/meine Idee war halt, dem Nutzer diese Aufgabe abzunehmen und einfach alle seine Dateien automatisch zu verschieben bzw. zu kopieren... deshalb ja meine anfängliche Idee mit dem Befehl "XCOPY /d" ohne Angabe eines Datums... ;))

Ich dachte quasi auch an eine Art der "Vergleich der existierenden Dateien und Unterordner" auf altem Heimatlaufwerk und neuem Heimatlaufwerk...
Wenn dann ermittelt ist, welche Dateien und Unterordner auf dem neuen Heimatlaufwerk schon bestehen (namens- und inhaltsgleich sind), könnte das Batch-Programm die fehlenden Dateien und Ordner (die dann die vom Nutzer eingerichteten und gespeicherten Daten sind) ins Ziel (neues Heimatlaufwerk) kopieren und anschließend in der Quelle löschen - sprich Verschieben!

Ich freue mich weiter auf Einträge zu meiner Frage und gebe noch nicht auf ;))
Vielen Dank im Voraus...
LG Kohlfurther
Member: Endoro
Endoro Mar 31, 2013 at 18:22:06 (UTC)
Goto Top
Hallo kohlfurther,

Xcopy also. Hast du noch weitere Ideen (Skriptansatz)?
Sonst versuch es doch einfach mit
xcopy /d /s /l "quellordner" "zielordner"  
Der Parameter "/l" sorgt dafür, dass noch nichts kopiert wird, sondern Xcopy zeigt nur an, was es kopieren würde.


Frohe Ostern & bb
Member: bastla
bastla Mar 31, 2013 at 19:12:26 (UTC)
Goto Top
... wobei sich vielleicht eine etwas umfangreichere Auswahl an "xcopy"-Optionen anbieten würde:
xcopy /dehkry /l "quellordner" "zielordner"
Grüße
bastla
Member: kohlfurther
kohlfurther Apr 01, 2013 at 14:04:08 (UTC)
Goto Top
Zunächst einmal herzlichen Dank für die Hinweise zum Befehl "XCOPY"...
Ich werde mal schauen, dass ich morgen dazu komme im Büro eine erste Version der Datei zu schreiben und dann hier berichten, ob es zum gewünschten Ergebnis geführt hat...

VIELEN DANK vorab für eure Hinweise und Mühen...
LG und frohen Oster-Montag noch...
Kohlfurther
Member: ThePinky777
ThePinky777 Apr 02, 2013 at 16:08:32 (UTC)
Goto Top
Zitat von @kohlfurther:
Zunächst einmal herzlichen Dank für die Hinweise zum Befehl "XCOPY"...
Ich werde mal schauen, dass ich morgen dazu komme im Büro eine erste Version der Datei zu schreiben und dann hier berichten,
ob es zum gewünschten Ergebnis geführt hat...

VIELEN DANK vorab für eure Hinweise und Mühen...
LG und frohen Oster-Montag noch...
Kohlfurther

Das Robocopy.exe musst du nicht installieren, kann man einfach irgendwo ablegen wo man halt rechte hat und dann mit
c:\robocopy.exe parameter....
ausführen.

Ist mächtiger wie xcopy, bei uns in der firma wird das zum synchronisieren von daten zwischen servern verwendet.
wie gesagt schaus dir mal an, und installieren muss man da nix.
Member: kohlfurther
kohlfurther Apr 04, 2013 at 18:20:33 (UTC)
Goto Top
Hallo nochmal in die Runde...

@thepinky:
Danke nochmal fürs Werbung machen in Sachen "Robocoy"... war mir so nicht bewusst, dass ich es einfach ohne Installation ablegen kann... habs dann heute auch mal im Netzwerk abgelegt UND ZEIT gefunden, mich damit zu beschäftigen... :D

UND TATSÄCHLICH: Super Tool...
Hab es nach ein paar Versuchen mit den (scheinbar) richtigen Parametern geschafft...

@all:
Morgen wird dann noch bei ein, zwei Kollegen getestet und dann spätestens am kommenden Montag verteilt... ;))

Geklappt hat es jetzt mit dieser Syntax:
robocopy [Quelle] [Ziel] /E /XO

Kopiert ins Ziel werden nun grds. alle Verzeichnisse und Dateien!
Ausgenommen nur Dateien und Ordner die bereits NEU ANGELEGT wurden im Ziel...
UND ausgenommen, die Dateien, die bereits mit neuerem Datum im Ziel liegen!

Nun werde ich morgen noch eine weitere Zeile in die Batch-Datei einbauen, die nach dem erfolgreichen Kopiervorgang die [Quelle] löscht... :D
Hab noch Bedenken, dass direkt mit dem Parameter "/MOVE" zu machen!
UND DANN IST ES VOLLBRACHT...

GROSSEN DANK an alle die hier fleißig geschrieben haben!
Wenn der Test morgen erfolgreich verläuft, markier ich den Beitrag noch als "gelöst"...

Wenn ihr noch Verbesserungsvorschläge habt; immer her damit... ;))

Vielleicht hat noch jemand eine Idee, ob es sinnig ist [Quelle] und [Ziel] nach dem Kopiervorgang noch zu "vergleichen" um sicher sein zu können, dass nur die gewollten Dateien kopiert worden sind!
Ne Idee, wie so was noch reingebracht werden könnte?

LG an die Community...
Kohlfurther
Member: ThePinky777
ThePinky777 Apr 05, 2013 updated at 06:37:30 (UTC)
Goto Top
Also du kannst generell ein Log File erzeugen unter DOS in dem man das so schreibt
BEFEHLSZEILE >>"C:\log.txt"

das kannst du auch mit Robocopy (musst dann aber bei robocopy nen Parameter hinhängen - No Progressbar - sonst siehts schrottig aus) machen, ergo hast du dann ein Log File.

Tja und nun wirds komplex, man könnte dann unter VBS Script z.B. das Logfile öffnen lassen und nach irgendwelchen Zeichenketten suchen, die indizien für Fehler sind, und anschließend das VBS Script irgendwas machen lassen wie z.B. ne email versenden mit error warnung oder ein erneutes File erzeugen... wie auch immer.

aber dazu muss man sich dann schon ganz schön reinhängen in die script sprache.

Out of the Box fällt mir mal nix ein.
Member: bastla
bastla Apr 05, 2013 at 10:08:17 (UTC)
Goto Top
@ ThePinky777
man könnte dann unter VBS Script z.B. das Logfile öffnen lassen und nach irgendwelchen Zeichenketten suchen, die indizien für Fehler sind
Dafür tut's zur Not auch "findstr", und per CMD eine Mail mit "blat" verschicken ist auch kein Hexenwerk ...

Grüße
bastla
Member: ThePinky777
ThePinky777 Apr 05, 2013 at 13:30:58 (UTC)
Goto Top
hast recht, ich denk schon garnicht mehr so einfach hehe

ich persöhnlich hab mir mal VBS Script geschrieben was source und destination dir dynamisch auf anzahl der Verzeichnisse und Dateien vergleicht geschrieben. die Lösung schwirrte da bei mir im kopf rum.

aber ja findstr.exe (auch wie robocopy downloadbar und verwendbar) sollte den job auch erledigen.
und mit blat.exe kann man die mail verschicken, auch downloadbar und man muss nix installieren.

aber damit mail verschicken geht muss euer emailserver auch erlauben das ein client sich "unauthifiziert" connecten darf und ne mail schicken, normalerweise wird das restriktiv gehandhabt in unternehmen und ist nich selbstverständlich das es geht. sei dazu erwähnt.
Member: bastla
bastla Apr 05, 2013 at 16:37:13 (UTC)
Goto Top
@ ThePinky777
findstr.exe (auch wie robocopy downloadbar
Noch nicht mal das - ist bereits in CMD verfügbar.

Grüße
bastla
Member: ThePinky777
ThePinky777 Apr 09, 2013 at 07:12:45 (UTC)
Goto Top
ok wieder was gelernt, aber unter XP wars ja nicht drin oder ? (hab geschaut unter Vista is es drin face-smile )
Member: bastla
bastla Apr 09, 2013 at 13:03:19 (UTC)
Goto Top
Hallo ThePinky777!

"findstr" gab's auch schon in W2000 ... face-wink

Grüße
bastla
Member: kohlfurther
kohlfurther Apr 09, 2013 at 18:44:54 (UTC)
Goto Top
N'Abend in die Runde... :D

Wie versprochen hier noch der abschließende Hinweis:
Meine Tests mit dem robocopy-Befehl
"robocopy.exe [Quelle] [Ziel] /E /XO /V /NP /LOG:[Ziel Log-File]"
sind gut verlaufen!

Werde die Batch-Datei nun noch mit einem anschließenden DELETE-Befehl versehen, der dann nach dem Kopier-Vorgang die [Quelle] löscht und habe das Mini-Projekt dann abgeschlossen...

Abschließend wird die Möglichkeit dann noch an die betroffene Kollegenschaft per Push-Mail "verteilt" bzw. auf den Ablageort der Batch-Datei hingewiesen und GUT ists...

VIELEN LIEBEN DANK NOCHMAL an alle Beiträge zu dem Thema... :D
Bin nun wieder ein Stückchen schlauer und freue mich schon auf den nächsten kleinen Auftrag für eine Kopier-Batch...

und natürlich den nächsten Beitrag hier im Forum...

Thema gilt jetzt für mich als gelöst...

Alles Gute in die Community vom...
Kohlfurther :D