wusa88
Goto Top

Datei mit bestimmter Endung kopieren und danach verschieben

Hallo zusammen,

ich bin auf der Suche, wie ich folgendes bewerkstelligen kann.

Ausgangssituation:
Windows 10 mit eingebundenen Netzlaufwerk-Ordnern.

Auf einen Ordner haben verschiedene Personen zugriff.
Ordner A - hier werden Dateien mit der Endung .ab abgelegt. Bei der Dateiendung handelt es sich um eine von uns definierte Endung. Darin befinden sich nur Daten als CSV.

Jetzt müssen, wenn Daten mit der Endung .ab vorhanden sind, diese in den Ordner B kopiert werden.
Wenn das ganze kopiert ist, gibt es einen Unterordner im Ordner A. Dort sollen die Dateien dann verschoben werden.

Ordner A:
Ordner erledigt
Datei1.ab
Datei2.ab
Datei3.ab

Ordner B:
Hierher sollen die Dateien.ab

Es wird unregelmäßig und nicht immer mit gleich vielen Daten befüllt.
Es kann sein, dass 1 Stunde nichts passiert. Es kann aber auch sein, dass in 10 Minuten 10 Dateien erstellt werden.

Die Dateien müssen nicht gleichzeitig verschoben werden, es kann auch nacheinander erfolgen.
Es sollte alle paar Minuten geprüft werden ob wieder eine Datei vorhanden ist.

Gibt es hierfür fertige Programme, oder ist das schnell selber Lösbar?

Danke

Content-ID: 6379600176

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

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

3063370895
Lösung 3063370895 15.03.2023 um 14:13:43 Uhr
Goto Top
Hi,

pack das in eine geplante Aufgabe alle X Minuten:

$ordnerA = "C:\temp"  
$ordnerB = "C:\temp2"  
$ordnerErledigt = "C:\temp\erledigt"  


$files = Get-ChildItem -Path $ordnerA -Filter "*.ab"  
$files | Copy-Item -Destination $ordnerB
$files | Move-Item -Destination $ordnerErledigt
wusa88
wusa88 15.03.2023 um 14:19:31 Uhr
Goto Top
Direkt in geplante Aufgaben wird es vermutlich nicht funktionieren, oder ich weiß nur nciht wie?

Ich hätte das jetzt in eine Datei gepackt (ich vermute Powershell?) und hätte die Datei dann alle X Minuten ausgeführt?
3063370895
Lösung 3063370895 15.03.2023 um 14:27:22 Uhr
Goto Top
Du speicherst das als .ps1-Datei ab und erstellst eine neue Aufgabe, die alle X Minuten das Skript ausführt:

mmc_qvcmtftul5
wusa88
wusa88 15.03.2023 aktualisiert um 16:09:53 Uhr
Goto Top
Vielen Dank für das Skript das funktioniert soweit "eigentlich".

Ich habe allerdings trotzdem Probleme.

Rufe ich die Datei mit Rechtsklick "Mit PowerShell ausführen" auf, dann wird alles wie gewünscht gemacht.
Datei wird richtig kopiert und dann verschoben. Genau wie gewünscht.

Rufe ich allerdings die Powershell direkt auf und navigiere zu dem Pfad und rufe innerhalb der Powershell die Datei auf, kommt folgende Meldung:

Copy-Item : Das Laufwerk wurde nicht gefunden. Ein Laufwerk mit dem Namen "S" ist nicht vorhanden.                      In C:\batch\ab_kopieren.ps1:7 Zeichen:10                                                                                + $files | Copy-Item -Destination $ordnerB                                                                              +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                  + CategoryInfo          : ObjectNotFound: (S:String) [Copy-Item], DriveNotFoundException                                + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.CopyItemCommand   

Heißt innerhalb der Powershell geht es nicht, per Rechtsklick geht es aber.
Bedeutet jetzt aber für mich, dass es auch in der Aufgabenplanung nicht funktioniert.

Wo könnte ich hier ansetzen?
6247018886
6247018886 15.03.2023 aktualisiert um 16:25:04 Uhr
Goto Top
Heißt innerhalb der Powershell geht es nicht, per Rechtsklick geht es aber.
Netzlaufwerke werden Usersession-abhängig gemappt. Startest du bspw. eine elevated Powershell ist das Laufwerk nicht mehr vorhanden weil es nur in der aktuellen Session gemappt ist. Nutze statt Netzlaufwerkbuchstaben UNC Pfade (\\Server\Share).

Cheeers briggs
wusa88
wusa88 15.03.2023 um 16:35:11 Uhr
Goto Top
Zitat von @6247018886:
Nutze statt Netzlaufwerkbuchstaben UNC Pfade (\\Server\Share).

So klappt es leider bei beiden Varianten nicht mehr.
Weder bei mit Rechtsklick noch direkt in der Powershell.
Das Netzlaufwerk ist aber vorhanden und erreichbar.
6247018886
6247018886 15.03.2023 aktualisiert um 16:41:06 Uhr
Goto Top
Was heißt "klappt nicht"? Fehlermeldung lautet wie?? Klappt hier problemlos, ist ja nix besonderes...
Berechtigungen prüfen ...
wusa88
wusa88 15.03.2023 aktualisiert um 16:42:04 Uhr
Goto Top
Fehlermeldung:
Copy-Item : Der Netzwerkname wurde nicht gefunden.
Es wird nicht in den Ordner kopiert, aber in den anderen Ordner sauber verschoben verschoben.
6247018886
6247018886 15.03.2023 aktualisiert um 16:42:54 Uhr
Goto Top
Es wird nicht in den Ordner kopiert, aber in den anderen Ordner sauber verschoben verschoben.
Dann prüfe Berechtigunen für den Ordner der Kopien.

Wobei hier noch der Parameter -File fehlt falls es im Ordner auch Ordner mit der Endung *.ab gibt:
$ordnerA = "C:\temp1"  
$ordnerB = "\\Server\Share\temp2"  
$ordnerErledigt = "\\Server\Share\erledigt"  
$files = Get-ChildItem -LiteralPath $ordnerA -Filter *.ab -File
$files | Copy-Item -Destination $ordnerB -Force
$files | Move-Item -Destination $ordnerErledigt -Force
6247018886
6247018886 15.03.2023 aktualisiert um 16:46:06 Uhr
Goto Top
Copy-Item : Der Netzwerkname wurde nicht gefunden.
Sind im Pfad Dollarzeichen oder sonstige Sonderzeichen enthalten?

Benutzt du DNS Namen oder IPs?
wusa88
wusa88 15.03.2023 um 16:45:58 Uhr
Goto Top
Nein keine Sonderzeichen oder sonstige. Nicht einmal Leerzeichen.

Ich habe den Parameter -File jetzt noch angefügt. Jetzt scheint es zu funktionieren.
Allerdings mit dem Netzwerk-Laufwerksbuchstaben S:

Ich teste aber jetzt noch ein wenig.
6247018886
6247018886 15.03.2023 aktualisiert um 16:49:10 Uhr
Goto Top
Benutzt du DNS-Namen (single label/netbios), IPs oder FQDN im UNC? Dann checke die Auflösung dieser.
wusa88
wusa88 15.03.2023 um 16:48:55 Uhr
Goto Top
Für diese Freigabe habe ich die IP benutzt.
6247018886
6247018886 15.03.2023 um 16:49:45 Uhr
Goto Top
Separate Credentials/ Windows Credentials?
wusa88
wusa88 15.03.2023 um 16:54:21 Uhr
Goto Top
Für den lokalen Ordner Windows Credentials. Für den Netzwerkordner... das ist eine gute Frage. Das ist ein Fremdsystem das nur per Netzwerkshare eingebunden ist.

Aber jetzt scheint es zu funktionieren auch per Aufgabenplanung.
6247018886
6247018886 15.03.2023 aktualisiert um 16:57:54 Uhr
Goto Top
Gut dann stelle nur sicher das der Account über den es in der Aufgabenplanung ausgeführt wird, jener ist bei dem die Berechtigungen für das Share im Credential-Store vorhanden sind.