Powershell Dateien mit Pfad in ein Ordner kopieren
Hallööchen
Beschäftige mich gerade mit Powershell...
Ich möchte Dateien mit dem Archivbit = 1 in ein Testordner kopieren...
Mein Problem... Ich gebe den Pfad an, ab dem er die Dateien Kopieren soll, zB path = C:\Users\Admin\Documents" ...
Danach lese ich das Archivbit der jeweiligen files aus und speichere den Dateinamen dieser Files (mit Archivbit = 1) in $files
Nun möchte ich das ganze mit Copy-Item noch kopieren, jedoch fehlt die Ordnerstruktur der jeweiligen Files mit Archivbit = 1 ... (Der Pfad der Dateien mit gesetztem Archivbit wird nicht mitkopiert, die Files werden einfach in den Zielordner geknallt ( ... )
Mein Code:
mkdir D:\test #zielpfad
$path = "C:\Users\Admin\Documents" #sourcepfad
$files = (Get-ChildItem -path "C:\Users\Admin\Documents" -Recurse -File | where {$_.Attributes -contains "Archive"})
$files | foreach {Copy-Item -Path $_.fullname -Destination "D:\test$($_.path)\$($_.name)" -Force}
Mir ist schon klar wo man herumbasteln muss, nur wie könnte man dies lösen, dass zB der Zwischenpfad noch in eine Variable gespeichert wird? ... oder sonst irgendwie...
Cheeeers,
Windelterrorist
Beschäftige mich gerade mit Powershell...
Ich möchte Dateien mit dem Archivbit = 1 in ein Testordner kopieren...
Mein Problem... Ich gebe den Pfad an, ab dem er die Dateien Kopieren soll, zB path = C:\Users\Admin\Documents" ...
Danach lese ich das Archivbit der jeweiligen files aus und speichere den Dateinamen dieser Files (mit Archivbit = 1) in $files
Nun möchte ich das ganze mit Copy-Item noch kopieren, jedoch fehlt die Ordnerstruktur der jeweiligen Files mit Archivbit = 1 ... (Der Pfad der Dateien mit gesetztem Archivbit wird nicht mitkopiert, die Files werden einfach in den Zielordner geknallt ( ... )
Mein Code:
mkdir D:\test #zielpfad
$path = "C:\Users\Admin\Documents" #sourcepfad
$files = (Get-ChildItem -path "C:\Users\Admin\Documents" -Recurse -File | where {$_.Attributes -contains "Archive"})
$files | foreach {Copy-Item -Path $_.fullname -Destination "D:\test$($_.path)\$($_.name)" -Force}
Mir ist schon klar wo man herumbasteln muss, nur wie könnte man dies lösen, dass zB der Zwischenpfad noch in eine Variable gespeichert wird? ... oder sonst irgendwie...
Cheeeers,
Windelterrorist
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290371
Url: https://administrator.de/contentid/290371
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
6 Kommentare
Neuester Kommentar
$target = 'D:\test'
$source = "C:\Users\Admin\Documents"
Get-ChildItem $source -Recurse -File | ?{$_.Attributes -band [System.IO.FileAttributes]::Archive} | %{
$targetpath = $_.Directoryname.replace($source,$target)
if (!(Test-Path $targetpath)){md $targetpath -Force}
Copy-Item -Path $_.fullname -Destination $targetpath -Force
}
Gruß jodel32
Zitat von @windelterrorist:
Kann ich die Archivbits danach auch zurücksetzen? Ich guck sonst selbst mal im Forum, wurde ja bestimmt schonma erwähnt ;)
Einfach mit in die Schleife rein packenKann ich die Archivbits danach auch zurücksetzen? Ich guck sonst selbst mal im Forum, wurde ja bestimmt schonma erwähnt ;)
Set-ItemProperty $_.Fullname -Name attributes -Value ($_.Attributes -bxor [System.IO.FileAttributes]::Archive) -Force
Versteh dein Problem nicht, Variablen kannst du doch anpassen ?! Mal ein bißchen das Hirn anstrengen my friend ... sollte man eigentlich erwarten können