Vorhandene Datei automatisch in neu erstellte Ordner kopieren
Goliax (Level 1) - Jetzt verbinden
01.12.2020, aktualisiert 15:11 Uhr, 371 Aufrufe, 14 Kommentare, 1 Danke
Hallo zusammen.
Ich möchte folgendes realisieren, habe da aber keinen Ansatz gefunden.
Ich habe eine Exceldatei mit Inhalt.
Ich habe eine Ordnerstruktur auf einem Netzlaufwerk.
Ich möchte folgendes realisieren, habe da aber keinen Ansatz gefunden.
Ich habe eine Exceldatei mit Inhalt.
Ich habe eine Ordnerstruktur auf einem Netzlaufwerk.
- Ordner 1
- Ordner 1.1
- Ordner 1.1.1
- Ordner 1.1.2
- Ordner 1.2
- Ordner 1.2.1
- Ordner 1.2.2
usw.
über das Jahr kommen in Ordner 1
neue Unterordner, und auch Unterunterordner hinzu.
Ich möchte, das die Exceldatei automatisch nach dem Erstellen eines Unterordners und Unterunterordners in eben diesen kopiert wird, habe aber keine Ahnung, wie ich das anstellen soll.
Im Moment kopiere ich die Datei von Hand, was aber echt Lästig ist, da am Tag auch schon mal 10 neue Unterordner hinzukommen.
Könnt ihr mir da weiterhelfen?
14 Antworten
- LÖSUNG NordicMike schreibt am 01.12.2020 um 16:13:19 Uhr
- LÖSUNG Pjordorf schreibt am 01.12.2020 um 16:24:37 Uhr
- LÖSUNG Goliax schreibt am 01.12.2020 um 17:10:17 Uhr
- LÖSUNG 146707 schreibt am 01.12.2020 um 17:26:57 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 13:13:36 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 13:49:55 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 14:48:02 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 14:53:07 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 15:05:23 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 15:05:57 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 17:29:54 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 17:32:58 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 17:48:52 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 17:55:46 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 17:48:52 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 17:32:58 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 17:29:54 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 15:05:57 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 15:05:23 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 14:53:07 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 14:48:02 Uhr
- LÖSUNG 146707 schreibt am 10.12.2020 um 13:49:55 Uhr
- LÖSUNG Goliax schreibt am 10.12.2020 um 13:13:36 Uhr
LÖSUNG 01.12.2020 um 16:13 Uhr
LÖSUNG 01.12.2020 um 16:24 Uhr
Hallo,

Gruß,
Peter
Zitat von NordicMike:
d.H. sobald jemand einen Ordner und Unterordner erstellt, soll die Excel Datei automatisch dort hin verschoben werden?
Der TO sagt explicit kopieren, nicht verschieben d.H. sobald jemand einen Ordner und Unterordner erstellt, soll die Excel Datei automatisch dort hin verschoben werden?
Gruß,
Peter
LÖSUNG 01.12.2020 um 17:10 Uhr
LÖSUNG 01.12.2020, aktualisiert 10.12.2020
Kleines PS Skript mit Filesystemwatcher...
$folder = 'D:\Basefolder'
$global:file = 'D:\datei.xlsx'
Unregister-Event -SourceIdentifier ObjCreated -EA 0
$fsw = New-Object IO.FileSystemWatcher $folder, '*' -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'DirectoryName','LastWrite'}
Register-ObjectEvent $fsw Created -SourceIdentifier ObjCreated -Action {
$fullpath = $Event.SourceEventArgs.FullPath
$timeStamp = $Event.TimeGenerated
if((gi $fullpath).PSIsContainer){
Write-Host "Der Ordner '$fullpath' wurde um '$timeStamp' erstellt." -f green
if (!(Test-Path (join-path $fullpath ([io.path]::GetFileName($global:file))))){
copy -LiteralPath $global:file -Destination $fullpath -Verbose -Force
}
}
} | out-null
cls
Write-Host "Warte auf neue Ordner unterhalb (rekursiv) von '$folder' ..." -f Green
while($true){
[void]$fsw.WaitForChanged("Created",2000)
}
LÖSUNG 10.12.2020, aktualisiert um 13:38 Uhr
Hallo primal,
vielen Dank erst einmal für das Skript!
Power Shell schmeisst allerdings folgenden Fehler:
vielen Dank erst einmal für das Skript!
Power Shell schmeisst allerdings folgenden Fehler:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In D:\Power_Shell_ISE_BV_Begleitzettel\skript2020.ps1:22 Zeichen:5
+ [void]$fsw.WaitForChanged("Created",2000)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
LÖSUNG 10.12.2020, aktualisiert um 13:50 Uhr
LÖSUNG 10.12.2020 um 14:48 Uhr
so hab ich den Code angepasst:
das ist die PS Version, die ich installiert habe:
$folder = 'S:\2020'
$file = 'S:\BV-Begleitzettel.xlsx'
Unregister-Event -SourceIdentifier ObjCreated -EA 0
$fsw = New-Object IO.FileSystemWatcher $folder, '*' -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'DirectoryName','LastWrite'}
Register-ObjectEvent $fsw Created -SourceIdentifier ObjCreated -Action {
$fullpath = $Event.SourceEventArgs.FullPath
$timeStamp = $Event.TimeGenerated
if((gi $fullpath).PSIsContainer){
Write-Host "Der Ordner '$fullpath' wurde um '$timeStamp' erstellt." -f green
if (!(Test-Path (join-path $fullpath ([io.path]::GetFileName($file))))){
copy -LiteralPath $file -Destination $fullpath -Verbose -Force
}
}
} | out-null
cls
Write-Host "Warte auf neue Ordner unterhalb (rekursiv) von '$folder' ..." -f Green
while($true){
[void]$fsw.WaitForChanged("Created",2000)
}
Name Value
---- -----
PSVersion 5.1.18362.1171
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.1171
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
LÖSUNG 10.12.2020 um 14:53 Uhr
LÖSUNG 10.12.2020, aktualisiert um 15:06 Uhr
LÖSUNG 10.12.2020, aktualisiert um 17:31 Uhr
LÖSUNG 10.12.2020, aktualisiert um 17:38 Uhr
Sicher geht das, mach es halt richtig ... Nur zur Info, Netzlaufwerke sind Userabhängig gemappt, also muss entweder das Skript mit den Creds des users laufen oder im Skript das Laufwerk erst gemappt werden, oder ein UNC-Pfad genutzt werden, das ist sicher dein Fehler! Beachtet man das kann man das auch mittels System-Account laufen lassen (Berechtigungen/NTFS-ACLs der Zielordner beachten!).
LÖSUNG 10.12.2020 um 17:48 Uhr
ich mach jetzt Feierabend, schaue mir das morgen nochmal in Ruhe an.
Ich habe festgestellt, das das Script nur mit der Powershell_ise.exe richtig läuft.
wenn ich das Script über rechtsklick > mit Powershell ausführen - starte, kommt zwar die Meldung, das ein neuer Ordner angelegt wurde, aber der Kopiervorgang findet nicht statt.
mit Powershell.exe
und der Ordner bleibt leer
mit Powershell_ise.exe
und die Datei wird kopiert
Ich habe festgestellt, das das Script nur mit der Powershell_ise.exe richtig läuft.
wenn ich das Script über rechtsklick > mit Powershell ausführen - starte, kommt zwar die Meldung, das ein neuer Ordner angelegt wurde, aber der Kopiervorgang findet nicht statt.
mit Powershell.exe
Warte auf neue Ordner unterhalb (rekursiv) von 'S:\S&SBV\2020' ...
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:41:05' erstellt.
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:41:05' erstellt.
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:41:18' erstellt.
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:41:18' erstellt.
mit Powershell_ise.exe
Warte auf neue Ordner unterhalb (rekursiv) von 'S:\S&SBV\2020' ...
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:45:53' erstellt.
AUSFÜHRLICH: Ausführen des Vorgangs "Datei kopieren" für das Ziel "Element: S:\BV-Begleitzettel.xlsx Ziel: S:\S&SBV\2020\Neuer Ordner\BV-Begleitzettel.xlsx".
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:45:53' erstellt.
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:46:27' erstellt.
AUSFÜHRLICH: Ausführen des Vorgangs "Datei kopieren" für das Ziel "Element: S:\BV-Begleitzettel.xlsx Ziel: S:\S&SBV\2020\Neuer Ordner\BV-Begleitzettel.xlsx".
Der Ordner 'S:\S&SBV\2020\Neuer Ordner' wurde um '12/10/2020 17:46:27' erstellt.
LÖSUNG 10.12.2020, aktualisiert um 17:58 Uhr