7. Oktober 2015 11:32
Falls Mergeordner wie ORIGINAL, MODIFIED usw. überflüssige Dateien enthalten, kann man diese mit diesen Funktionen entrümpeln.
Ein Ordner gibt dabei die benötigten Objekte vor (im Beispiel 1 der ORIGINAL), der andere (MODIFIED) wird durchlaufen und Dateien, die keinen Namensvetter im anderen Ordner haben, werden gelöscht.
Anwendungsbeispiel: Ordner MODIFIED enthält einen kompletten Objektexport, ORIGINAL nur die zu mergenden Objekte. Nach Anwendung des Skripts blieben auch diese nur noch im MODIFIED-Ordner über, der restliche Ballast ist dann entfernt.
Vor dem Aufruf der jeweiligen Funktion in der PowerShell in den Pfad wechseln, der die Mergeordner enthält.
- Code:
function DeleteNonMatchingFilesInMODIFIED
{
$files = Get-ChildItem ".\MODIFIED"
for ($i=0; $i -lt $files.Count; $i++)
{
$FullFileName = $files[$i].FullName
$FileName = Split-path $files[$i] -Leaf
$ORIGFile = ".\ORIGINAL\$fileName"
if (-not(Test-Path $ORIGFile))
{Remove-Item $Fullfilename -force -Verbose}
}
}
MergeOrdnerabgleichen.png
Beispiel 2: Hier wird ORIGINAL durchlaufen und dort die im Ordner MODIFIED nicht vorhandenen Dateinamen gelöscht.
- Code:
function DeleteNonMatchingFilesInORIGINAL
{
$files = Get-ChildItem ".\ORIGINAL"
for ($i=0; $i -lt $files.Count; $i++)
{
$FullFileName = $files[$i].FullName
$FileName = Split-path $files[$i] -Leaf
$MODIFile = ".\MODIFIED\$fileName"
if (-not(Test-Path $MODIFile))
{Remove-Item $Fullfilename -force -Verbose}
}
}
Beispiel 3: Hier wird MODIFIED durchlaufen und dort die im Ordner TARGET nicht vorhandenen Dateinamen gelöscht.
- Code:
function DeleteNonMatchingFilesInMODIFIEDComparedWithTARGET
{
$files = Get-ChildItem ".\MODIFIED"
for ($i=0; $i -lt $files.Count; $i++)
{
$FullFileName = $files[$i].FullName
$FileName = Split-path $files[$i] -Leaf
$TARGFile = ".\TARGET\$fileName"
if (-not(Test-Path $TARGFile))
{Remove-Item $Fullfilename -force -Verbose}
}
}
Dazu ein kleiner Tipp am Rande:
Den aktuellen Powershell-Pfad als Explorerfenster öffnen geht am schnellsten über den Alias
ii des Cmdlets
Invoke-Item, gefolgt von Leerzeichen und Punkt.
- Code:
ii .
Für andere Ordner den Punkt durch den benötigten Pfad ersetzen.
- Code:
ii c:\temp
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.