Vorhandene Datei automatisch in neu erstellte Ordner kopieren
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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 627153
Url: https://administrator.de/contentid/627153
Printed on: April 24, 2024 at 18:04 o'clock
14 Comments
Latest comment
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
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)
}
Dann hast du's nicht richtig angepasst einen ungültigen Pfad angegeben (Ein FSW kann zu.B. keine UNC Pfade nutzen) oder eine zu alte PS.
Wurde hier getestet und läuft einwandfrei.
Wurde hier getestet und läuft einwandfrei.
Sach ich doch .
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!).
Nö, klappt hier einwandfrei. Kopiere das Skript nochmal in deinem erneut geposteten sind noch ein paar Variablen aus einer alten Version gesetzt. Wohl irgendwas im Browser-Cache hängen geblieben.