hepete
Goto Top

Automatisiertes wegkopieren von Daten

Hallo zusammen,
ich habe aktuell folgendes Problem zu lösen:
Ich benötige eine einfache Lösung, um Dateien von einem Verzeichnis auf ein neu zu erstellendes Verzeichnis zu verschieben.

Dabei soll der Verzeichnisname des neu anzulegende Verzeichnis nach folgender Syntax erstellt werden:
aktuelles Jahr-aktueller Monat-aktueller Tag-Laufende Nummer
Beispiel: 2018-01-05-1

Weiterhin sollte das Programm vor der Anlage des neuen Verzeichnisses überprüfen, ob nicht evtl. bereits ein Verzeichnis mit dem oben beschrieben Syntax existiert. Wenn es existiert, dann sollte ein neues Verzeichnis mit einer um 1 erhöhten laufenden Nummer angelegt werden. Wenn nicht, dann sollte das Verzeichnis normal (nach oben beschriebenem Syntax) angelegt werden. Somit würde ein evtl. Start des Programmes nicht in einen Fehler laufen, bzw. die evtl. im existierenden Zielverzeichnis befindlichen Daten nicht überschrieben werden.

Das Programm, welches ich über einen geplanten Task laufen lassen möchte, sollte möglichst in einer Script Sprache erstellt werden, die im normalen Windows implementiert ist, z.B.
  • als Batch Datei
  • als Windows Powershell
  • oder ggf. als Windows VBS / Scripting Host Datei.

Kann mir da jemand eine Lösung zeigen?
Vielen Dank

Content-Key: 363389

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

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

Mitglied: 135333
135333 Feb 02, 2018 updated at 12:23:38 (UTC)
Goto Top
Powershell:
# Ordner in dem erstellt werden soll
$folder = 'D:\Ordner'  
# aktuelles Datum formatieren
$date = get-date -f 'yyyy-MM-dd'  
# Auf vorhandene Ordner des aktuellen Datums überprüfen und aktuellste laufende Nummer extrahieren
$num = gci $folder -Directory | ?{$_.Name -like "$date-*"} | sort Name -Descending | select -First 1 | %{[int]$_.Name.Split('-')[-1]}  
# Wenn es eine laufende Nummer für das aktuelle Datum gibt ($num also nicht $null ist) erhöhe die laufende Nummer um eins
if ($num){$num +=1}else{$num = 1}
# Erstelle Ordner nach Vorgabe mit Datum und laufender Nummer
$newfolder = "$folder\$date-$num"  
md $newfolder -Force

# Hier dann bspw. ein Verschiebe oder Kopiervorgang in den neuen Ordner
move-item "D:\andererOrdner\*.pdf" -Destination $newfolder -Force  
Gruß snap
Member: Penny.Cilin
Penny.Cilin Feb 02, 2018 at 11:57:06 (UTC)
Goto Top
Hallo,

@135333 hat Dir schon eine Antwort gegeben.

Ach so:
Über die Suchfunktion hättest Du auch Lösungsmöglichkeiten gefunden.
Die Frage wird gefühlt alle zwei Tage gestellt.
Und ähnliche Lösungsmöglichkeiten muss man nur sinngemäß anpassen.

Gruss Penny
Member: hepete
hepete Feb 02, 2018 at 13:06:26 (UTC)
Goto Top
Hallo Snap,

vielen Dank für die schnelle Hilfe.
Ich habe Deine Powershell Lösung ausprobiert. Funktioniert tadellos.

Wenn ich dieses Script jetzt auf einem Server als geplanten Task alle 6 Stunden automatisiert laufen lassen möchte, muss ich die Datei ja abspeichern.
Meine Powershell Oberfläche hat als Dateierweiterung automatisch *.ps1 ausgewählt. Wenn ich versuche, diese Datei z.B. per Doppelklick zu starten, wird das Script lediglich im Editor angezeigt. Zum Starten muss ich dann die rechte Maustaste nutzen und dann "Mit Powershell ausführen" anwählen. Dann wird das Script auch ausgeführt.

Wie muss ich denn die Datei abspeichern und aus dem geplanten Task heraus aufrufen, damit das Script dann auch automatisch startet?
Da gibt es doch sicherlich ein speziellen Aufruf für. Könnstest Du mir den bitte noch miteilen.

Du siehst, das ich noch überhaupt keine Ahnung von Powershell habe.
Mitglied: 135333
135333 Feb 02, 2018 at 13:12:12 (UTC)
Goto Top
Member: hepete
hepete Feb 05, 2018 at 12:25:39 (UTC)
Goto Top
Hallo Snap,

ich habe das Script nach Deiner Anleitung als Task angelegt, aber die Ausführung des Scripts wird in unserem bedingt durch eine Policy verhindert. Auch den Set-"ExecutionPolicy Unrestricted" Befehl kann ich nicht laufen lassen, da wir keine Admin Rechte auf unseren Maschinen haben.
Da die Nutzung der Powershell Variante dann anscheinend bei uns nicht läuft, nun meine Frage:
Lässt sich die Aufgabe evtl. mit einem VB-Script oder als Batch-Datei lösen?
Mitglied: 135333
135333 Feb 05, 2018 updated at 13:36:12 (UTC)
Goto Top
Jap, lässt sich. Sonderwünsche darfst du gerne per PN gegen Aufwandsentschädigung abgreifen.