brause1701
Goto Top

Ordnerstruktur vergleichen (ohne Dateien!) - Windows, cmd, bat

Guten Tag liebe Experten,

ich möchte gern regelmäßig Ordnerstrukturen vergleichen. Im Ergebnis sollen die Ordner ausgegeben werden welche im Verzeichnis A existieren jedoch nicht im Verzeichnis B. Es sollen keine Inhalte oder dergleichen verglichen werden. Beispiel:

Root_A
  • sub_1
    • sub_1_1
  • sub_2
  • sub_3

vergleichen mit:

Root_B
  • sub_1
  • sub_3

Ergebnis:

Folgende Ordner existieren noch nicht:
sub_1\sub_1_1
sub_2


Irgendwie habe ich bisher keine simple, kleine Lösung gefunden. Meist geht es um viel komplexere Sachverhalte (mit Dateien, Zeitstempel, archive-flags, etc.).

Das Ganze sollte möglichst in einer simplen bat-Datei ablaufen. PowerShell ginge zur Not auch noch.

Im voraus vielen Dank!
Christopher

Content-Key: 388225

Url: https://administrator.de/contentid/388225

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 137289
Solution 137289 Oct 01, 2018 updated at 15:49:59 (UTC)
Goto Top
Powershell
$folderA = "C:\Root_A"  
$folderB = "C:\Root_B"  
compare @(gci $folderA -Directory -Recurse -Force | %{$_.Fullname.replace($folderA,"")}) @(gci $folderB -Directory -Recurse -Force | %{$_.Fullname.replace($folderB,"")})  
Gruß speedlink

Korrektur, sorry.
Member: brause1701
brause1701 Oct 02, 2018 at 10:36:48 (UTC)
Goto Top
Hallo speedlink,
danke für deine Zeilen face-wink es funktioniert!
Member: brause1701
brause1701 Oct 23, 2018 updated at 18:05:06 (UTC)
Goto Top
Ich habe meinen benötigten Vergleich mit dem PS-Script realisieren können. Nun soll eine dritte Person ohne Zugriff auf die PowerShell den Vorgang nutzen können. Im PS-Script sieht es so aus:
$loca = Get-Location

$folderA = "$loca\stand"  
$folderB = "$loca\last"  

$datum = Get-Date
$datum >>vergleich.txt

compare @(gci $folderA -Directory -Recurse -Force | %{$_.Fullname.replace($folderA,"")}) @(gci $folderB -Directory -Recurse -Force | %{$_.Fullname.replace($folderB,"")}) >>out.txt  

$datum >>out.txt
echo $loca >>out.txt
'Ende' >>out.txt  


$Zeitstempel = (Get-Date).ToString("yyyyMdd_HH.mm")  
Rename-Item -Path out.txt -NewName $Zeitstempel"_vergleich.txt"  

Kann man exakt diesen Vorgang auch in einem Bat-Script umsetzten? Andere Ideen?