robocopy -> prozess durchführbar?

RayZero

Lieutenant
Registriert
Sep. 2009
Beiträge
534
hallo zusammen,

ich sollte folgende gegebenheit realisieren, kann es aber über "robocopy" mit den
mir bekannten parametern nicht durchführen:

es gibt 3 ordner:

ordner_a --> quellordner
ordner_b --> zielordner 1
ordner_c --> zielordner 2

in ordner_a liegen viele .pdf dateien, welche von einem anderen prozess generiert werden.
im ordner_b und ordner_c befinden sich einige dateien von ordner_a.

jetzt soll ein "copyjob" erfolgen, welcher folgenden abgleich macht:

kopiere alle dateien von ordner_a (quelle), welche in ordner_b (ziel) enthalten sind, in den
besagten ordner_b und lösche danach die kopierten dateien aus ordner_a (also eigentlich
ausschneiden, nicht kopieren).

das gleiche soll für ordner_c passieren.

ordner_a enthält dann im endeffekt nur noch dateien, welche weder in ordner_b, noch
in ordner_c enthalten sind.

jemand ne idee?
 
Muss es zwingend Robocopy sein?

Ich würde das mit einer kleinen Batch Datei lösen, wenn das für Dich in Frage kommt.
 
Ich sehe auch nicht wie du das mit Robocopy lösen kannst...

eine Batdatei die über alle dateien im Ordner B und C durch iteriert und diese Dateien entsprechend in Ordner A löscht

Achtung code ist nicht getestet... soll nur als Hinweis dienen...
Code:
for Ordner_B %%f IN (*.*) DO  del Ordner_A\%f
und dann das gleiche für Ordner_C
 
hi,

es muss nicht zwingend robocopy sein, aber der vorgang sollte irgendwie
zeitlich managebar sein, z.b . über einen geplanten task.
eine batch würde also auch funktionieren - leider habe ich keine erfahrung
mit längeren scripts. kennt jemand eine gute seite zum einsteigen?
 
RayZero schrieb:
leider habe ich keine erfahrung
mit längeren scripts. kennt jemand eine gute seite zum einsteigen?
Das ist ja kein längeres Scripts hat kaum mehr als 2-3 zeilen...
am besten erstellst du dir Testordner
kopierst dir ein paar dummy dateien rein und spielst auf der commandozeile herum
so schwer ist das nicht...

Bezüglich Websiten..
Die Windowshilfe ist da nicht so schlecht, aber als start kann ich dir Wikibooks empfehlen
http://de.wikibooks.org/wiki/Batch-Programmierung
 
Ein ganzes Script ist dafür nicht nötig.

for /F "delims=," %i IN ('dir C:\ordner_b\*.pdf /b') DO @move /Y C:\ordner_a\"%i" C:\ordner_b
for /F "delims=," %i IN ('dir C:\ordner_c\*.pdf /b') DO @move /Y C:\ordner_a\"%i" C:\ordner_c


Wenn du die beiden Zeilen in eine Batch packst, dann musst du aus dem einfachen % ein doppeltes %% machen, ansonsten werden die Parameter von der cmd interpretiert, obwohl sie zum for Befehl gehören.

Zum einfachen Testen an der Commandline ohne Batch reichen die einfachen % Zeichen.

Was machen die Befehle?
In ordner_b wird nach pdf Dateien gesucht und diese dann mittels move aus ordner_a nach ordner_b verschoben, sofern sie in ordner_a vorhanden sind.

Das gleiche mit ordner_c.

Wenn in ordner_a Dateien drin sind, die nicht in ordner_b oder ordner_c sind, dann bleiben diese einfach in ordner_a liegen.


Alle Anforderungen erfüllt?


Mit der Zeitsteuerung bist du bei der Aufgabenplanung schon richtig, sie hat eine umfangreiche Steuerung für solche Zwecke. Schön sind dort auch Trigger wie zum Beispiel: Nur ausführen, wenn System seit 20 Minuten im Leerlauf etc.
 
Zuletzt bearbeitet:
hi,

perfekt! eine schande das man batch-programmierung als fisi nicht in der berufschule hat!

danke :-)

viele grüße
 
Batch-'Programmierung' ist auch nicht mehr zeitgemäß. Ich würde mich an Deiner Stelle mit PowerShell beschäftigen.
 
Ich denke es ist kein "Entweder dies oder dies" sondern beides.

Ich sehe die Powershell ehr als Nachfolger vom Scripting Host, die simple CommandLine wird die Powershell nicht ersetzen, das plant Microsoft auch gar nicht.

Ab Windows 7 bzw. Server2008R2 kannst du per Batch alles machen, was auch per GUI möglich ist.


Die Mühe der Powershell lohnt daher so richtig erst dann, wenn man ein Produkt betreut, daß ein Powershell Interface bietet, wie Exchange, SQL Server oder SCCM und Opalis.
 
Das wußte ich nicht. Wie fahre ich z.B. alle Hyper-V VMs eines Hosts runter, exportiere sie und fahre sie anschließend wieder hoch?
 
Du meinst mit Batch Methoden?

Meine Aussage dass man alles machen, was auch in der GUI geht, bezog sich auf Windows. Nicht die darunter laufenden Anwendungsprogramme.

Diese müssen alle ihre eigene Schnittstelle bieten, sei es eben für die Powershell oder für die klassische Commandline.


Bei Exchange, SQL und den von mir angesprochenen Produkten kommt man auch nur noch mit der Powershell weiter, Batch nützt da gar nichts, aber wie gesagt, bezog ich mich rein auf Windows.
 
Hyper-V ist doch ein Bestandteil von Windows.

Benutzt Du ernsthaft noch Batch Programmierung? Was machst Du damit z.B.?
 
Hyper-V wird mit Windows ausgeliefert, hat aber mit dem OS an sich doch nichts zu tun.

Du kannst den Windows Taschenrechner auch nicht fernsteuern, das ist genauso eine eigenständige Anwendung.


Was ich mit Batch mache? Automatisierungen an unserer Systemumgebung. Batch ist dabei der kleinste Nenner. Die meisten Leute können es lesen und verstehen.
Je größer die zu betreuende Umgebung wird, desto mehr ist man auf Automatisierung angewiesen.


Für komplizierte Sachen greife ich dann auf Perl oder Visual Studio zurück, aber nicht pauschal, sondern nur wo es sich anbietet. Hier ein paar schöne Threads, wo Batch ziemlich hilfreich und vor allem schnell war. Niemand lernt nur für gelegentliche Tätigkeiten eine vollwertige Scriptsprache.

https://www.computerbase.de/forum/threads/per-batchdatei-bestimmtes-stringteil-loeschen.1036986/
https://www.computerbase.de/forum/threads/uhzeit-in-batch-auswerten.1044227/
https://www.computerbase.de/forum/threads/batch-wert-aus-textdatei-auslesen.1001909/
https://www.computerbase.de/forum/threads/sonderzeichen-im-dateinamen-aendern.913547/
https://www.computerbase.de/forum/threads/buchstaben-eines-ordnernamens-entfernen.906218/
https://www.computerbase.de/forum/threads/leere-unterordner-in-einem-ordner-loeschen.631282/
https://www.computerbase.de/forum/threads/script-zum-loeschen-leerer-ordner.704699/
https://www.computerbase.de/forum/threads/batchdatei-aenderungsdatum.719053/
https://www.computerbase.de/forum/threads/cmd-kopieren-aus-unterordner.796506/
https://www.computerbase.de/forum/threads/ordner-durchsuchen-und-verknuepfungen-erstellen.899122/
https://www.computerbase.de/forum/t...rzeichnis-in-einer-variable-speichern.980193/

Nehmen wir mal an du musst in deiner Firma ruckzuck auf 5000 Systemen einen Reportingdienst abschalten, weil der entgegennehmende Datenbankserver Überlast hat.

Nach einer Minute war ich damit in Batch fertig. For Schleife die die Liste aller Server einer Domain durchgegangen ist und überall net stop oder sc abgesetzt hat. Das ist natürlich Quick and Dirty, aber manchmal braucht man genau das.

Von daher vertrete ich immer den Standpunkt sich erst die Aufgabe anzuschauen und dann zu entscheiden mit welchem Werkzeug (also welcher Script oder Programmiersprache) ich die Sache angehe.
 
Zuletzt bearbeitet:
Wie willst Du das den abgrenzen? "Ab Windows 7 bzw. Server2008R2 kannst du per Batch alles machen, was auch per GUI möglich ist." ist somit arg eingeschränkt. Gerade Hyper-V ist Teil des Betriebssystems.

Größere Firman setzen eher auf Standardisierung. Da macht es keinen Sinn, das eine damit, das andere damit zu machen. VB ist in meinen Augen deutlich einfacher zu lesen.
 
Zuletzt bearbeitet:
Natürlich ist diese Aussage in der Praxis arg einzuschränken. Aber möglich ist per Batch die komplette Windows Administration.

Aktionen die ich nur an einem System machen muss führe ich über die GUI aus, aber wiederkehrende Aufgaben nur per Script.

Und das ja auch erst dann wenn es im AD keine GPO gibt die diese Dinge erledigen kann.


Eine Aussage seitens Microsoft dass die Commandline ab Windows 8 nicht mehr zur Verfügung steht ist mir nicht bekannt. In sofern steht es ja jedem frei das Mittel seiner Wahl zu nutzen.



Standardisierung darf nicht so verstanden werden, dass ich mir die Werkzeuge dadurch einschränke. In einer Autowerkstatt gibts auch nicht nur Schraubenschlüssel der Größe 10.

Ich kenne große Firmen, da ich ausschließlich im Enterprise Bereich tätig bin. In der Praxis kommt immer ein Mix dabei raus. Es hängt eben davon ab was die Leute in den Firmen können. Soll ein exzellenter C Programmierer VB machen, nur weil man das mal so entschieden hat? Soll auf Linux Server verzichtet werden, nur weil die zu verwendende Sprache Visual Basic ist?

Ich sehe Standardisierung ehr innerhalb der Verwendung einer Sprache, aber nicht die Vorfestlegung auf eine einzelne Sprache.






edit: @FBrenner: Lass uns mal einen Test machen. Schreib doch mal meine Batch Lösung als VB

for /F "delims=," %i IN ('dir C:\ordner_b\*.pdf /b') DO @move /Y C:\ordner_a\"%i" C:\ordner_b
for /F "delims=," %i IN ('dir C:\ordner_c\*.pdf /b') DO @move /Y C:\ordner_a\"%i" C:\ordner_c

Nur mal als Vergleich, damit wir dann einfach als Vergleich eine 2.Lösung in einer anderen Sprache haben.
 
Zuletzt bearbeitet:
Zurück
Oben