PowerShell: Inhalte der Mergeordner abstimmen

Bild Tipps & Tricks zu den Dynamics NAV Versionen
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.

PowerShell: Inhalte der Mergeordner abstimmen

Beitragvon Kowa » 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.

:greenarrow: Vor dem Aufruf der jeweiligen Funktion in der PowerShell in den Pfad wechseln, der die Mergeordner enthält.

Code: Alles auswählen
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: Alles auswählen
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: Alles auswählen
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: Alles auswählen
ii .

Für andere Ordner den Punkt durch den benötigten Pfad ersetzen.
Code: Alles auswählen
ii c:\temp
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

ZurĂĽck zu NAV Tipps & Tricks

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast