Hallo,
ich möchte Dateien und Verzeichnisse des Öfteren von a nach b kopieren. Dabei kommt es vor, das schon vorhandene Verzeichnisse mit gleichem Inhalt bei weiteren Kopieraktionen einen Abbruch erzeugen, sofern ich nicht den Parameter -Force zum Überschreiben
nutze. Ich möchte die Dateien aber nicht überschreiben, da dies den Kopiervorgang erheblich verlängert.
Ich habe keinen Parameter gefunden, der dies ermöglicht. Spielen mit "-container" und "-WarningAction silentlycontinue" brachte auch keinen Erfolg.
Übersehe ich da nur etwas, oder muss ich die Sache anders angehen?
Habe es auch mit einer Filterung nach dem Archivbit "Normal" versucht, da die zu kopierenden Dateien dieses Bit haben, und die Dateien im Zielverzeichnis das Bit "Archiv". Hat bei mir allerdings auch nicht funktioniert.
Wie immer bin ich für jede Hilfe dankbar!
Sönke
Hier der Punkt, um den es geht:
Copy-Item -Path $Quelle -Destination $H320 -container -force -recurse -ErrorAction Stop
Hier das ganze Script, welches im Try, Catch Modus läuft:
############################################################################################################################
# Abfrage Laufwerksbuchstaben aller USB Devices, die "TOSHIBA MK3006GAL USB Device" heißen und speichern in einer Variable #
############################################################################################################################
$H320Test = gwmi win32_diskdrive | ?{$_.caption -eq "TOSHIBA MK3006GAL USB Device"} | %{gwmi -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=`"$($_.DeviceID.replace('\','\\'))`"} WHERE AssocClass = Win32_DiskDriveToDiskPartition"} | %{gwmi -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=`"$($_.DeviceID)`"} WHERE AssocClass = Win32_LogicalDiskToPartition"} | %{$_.deviceid}
####################
# Variablen setzen #
####################
$Quelle = "W:\Hörspiele Temp\PlayerKopieren\*"
$Temp = "W:\Hörspiele Temp\MediaKopieren\"
$Temp2 = "W:\Hörspiele Temp\MediaKopieren\*"
$Media = "\\MEDIA\Multimedia\Audio\Hoerspiele\Sortieren\"
$MovedFilesMedia = "C:\temp\Logs\MP3Player\MovedFilesMedia.txt"
$MovedFilesMp3 = "C:\temp\Logs\MP3Player\MovedFilesMp3.txt"
$ScriptErrorsMedia = "C:\temp\Logs\MP3Player\ScriptErrorsMedia.txt"
$ScriptErrorsMp3 = "C:\temp\Logs\MP3Player\ScriptErrorsMp3.txt"
#####################################################################################
# Setzt Laufwerksbuchstaben des USB MP3 Players und Pfad zu Hörspielen zusammen. #
# Falls nicht vorhanden, Exit! #
#####################################################################################
Try {
$H320 = "$H320Test\Music\Hörspiele"
gci $H320 -ErrorAction stop
}
catch
{$time = get-date -format f
Add-Content $ScriptErrorsMp3("Fehler! Vermutlich MP3 Player nicht angeschlossen, daher Pfad falsch: "+$_.exception.message,$time)
cscript.exe "C:\Program Files\Scripte\Andere Scripte\MP3Player\KopierenH320Fehler.vbs"
exit}
#####################################################################################
# Versucht Hörspiele auf MP3 Player zu kopieren. Logfiles werden für erfolgreichen #
# oder fehlerhaften Vorgang angelegt. Falls Vorgang scheitert, Exit! #
#####################################################################################
try {
Copy-Item -Path $Quelle -Destination $H320 -container -force -recurse -ErrorAction Stop
Get-ChildItem -Recurse $Quelle | ForEach-Object {
$FilePath = $_.fullname, $_.Lastaccesstime
$filepath | Out-file -Append $MovedFilesMp3}
move-Item -Path $Quelle -Destination $Temp -ErrorAction Stop
cscript.exe "C:\Program Files\Scripte\Andere Scripte\MP3Player\KopierenH320Fertig.vbs"
} catch {
$time = get-date -format f
Add-Content $ScriptErrorsMp3("Fehler aufgetreten: "+$_.exception.message, $time)
cscript.exe "C:\Program Files\Scripte\Andere Scripte\MP3Player\KopierenH320Fehler.vbs"
exit}
#####################################################################################
# Versucht Hörspiele auf NAS zu kopieren. Logfiles werden für erfolgreichen #
# oder fehlerhaften Vorgang angelegt. Falls Vorgang scheitert, Exit! #
#####################################################################################
try {
Copy-Item -Path $Temp2 -Destination $Media -container -force -recurse -ErrorAction Stop
Get-ChildItem -Recurse $temp2 | ForEach-Object {
$FilePath2 = $_.fullname, $_.Lastaccesstime
$filepath2 | Out-file -Append $MovedFilesMedia}
remove-Item -Path $temp2 -recurse -force -ErrorAction Stop
cscript.exe "C:\Program Files\Scripte\Andere Scripte\MP3Player\VerschiebeMediaFertig.vbs"
} catch {
$time = get-date -format f
Add-Content $ScriptErrorsMedia ("Fehler aufgetreten: "+$_.exception.message, $time)
cscript.exe "C:\Program Files\Scripte\Andere Scripte\MP3Player\VerschiebeMediaFehler.vbs"
}