none
Verzeichnisse vergleichen klappt nicht RRS feed

  • Frage

  • Guten Tag zsuammen

    Ich muss mich an euch Spezialisten wenden. Ich versuche zwei Verzeichnisse mit Unterordner zu vergleichen.

    Mit folgendem Befehl:

    compare (gci -r 'O:\XXX\XY\KKKKK\KKKK22\71-yyyy.zzz Crrr') (gci -r '\\Vf0010\es$\os\\XXXX\XY\KKKKK\KKKK22\71-yyyy.zzz Crrr')

    Wenn ich den nun laufen lasse, dann bekomme ich Fehlermeldungen gci : Ein Teil des Pfades konnte nicht gefunden werden. dAs heisst es handelt sich um Unterordner die ebenfalls Leerzeichen im Namen haben.

    Wie kann ich das  umgehen das er mir auch die ausliest?

    Besten dank und Gruss

    Roger

    Sonntag, 13. Oktober 2019 12:27

Antworten

  • Es kann sein das die Pfadlänge das Problem ist. 

    ...und wenn dem so ist, dann hat das Problem nichts mit PowerShell zu tun. Da hilft Dir entweder ein direkter Aufruf der API-Funktion, die längere Pfade kann, oder halt Robocopy. Oder Linux :-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Sonntag, 13. Oktober 2019 15:08

Alle Antworten

  • Moin,

    vermutlich sind nicht die Leerzeichen Dein Problem, sondern die Pfadlänge. Unabhängig davon, poste bitte Code als Code (zweiter Button von rechts im Editor).

    Ansonsten kannst Du ja mal die Fehlermeldung im Wortlaut posten.

    Doppelter Backslash im zweiten Pfad ist gewollt?


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Sonntag, 13. Oktober 2019 13:05
  • Danke

    Es kann sein das die Pfadlänge das Problem ist. 

    Ja doppelter Backslash ist wegen Serververzeichnis.

    gci : Ein Teil des Pfades "\\Vf001111.xxx.xxxxx.xxxxx.xx\xxx_os$\os\0\3\2\1\8\37983\xxxxxxxxxxxxxxxx\xxxxxxxxxxxx\xxxxxxxx\xx-xxxx.xxxx xxxxxx\xx-xxxx.xxxx xxxxx 
    HGK\Allgemein\0 Xxxxxxxx\02-xxxxxxxx\02 xxxxx\01 xxxxxx xxxxx\01 xxxx\04 xxxx xx xx xxxx, xxxxxxxxxxxxxx" konnte nicht gefunden werden.
    In Zeile:1 Zeichen:92
    + ... 3 xxxxx') (gci -r '\\Vf001111.xxx.xxxxx.xxxxx.xx\xxx_os$\os\0\3\2\1 ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ReadError: (\\Vf001111.xxx.... Chaud-de-Fonds:String) [Get-ChildItem], DirectoryNotFoundException
        + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand

    Hoffe das ich das richtig gemacht habe. Die Relevanten Daten sind durch x ersetzt worden.

    Muss auch sagen das ich in PowerShell ein Neuling bin.

    Gruss

    Roger

    Sonntag, 13. Oktober 2019 13:26
  • Ja doppelter Backslash ist wegen Serververzeichnis.

    Ich meinte den zweiten, aber der ist den Originaldaten nicht enthalten...


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Sonntag, 13. Oktober 2019 15:05
  • Es kann sein das die Pfadlänge das Problem ist. 

    ...und wenn dem so ist, dann hat das Problem nichts mit PowerShell zu tun. Da hilft Dir entweder ein direkter Aufruf der API-Funktion, die längere Pfade kann, oder halt Robocopy. Oder Linux :-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Sonntag, 13. Oktober 2019 15:08
  • Danke für die Schnelle Hilfe.

    Dann muss ich halt mal mit anderen Tools schauen.

    Gruss

    Roger

    Sonntag, 13. Oktober 2019 15:12
  • Statt des langen Pfades mit Leerzeichen kannst du meist auch den Kurzpfad übergeben:
    https://stackoverflow.com/questions/37904757/get-shortpath-using-powershell/37904822
    Sonntag, 13. Oktober 2019 15:43
  • Es kann sein das die Pfadlänge das Problem ist.

    https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/

    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Montag, 14. Oktober 2019 12:32
  • Wenn eine Anwendung nicht für lange Pfadnamen erstellt wurde, dann hilft auch keine sonstige Einstellung.
    In C++ gibts eine Compilerkonstante MAX_PATH=260, die eben nicht dynamisch ist.

    Erst per W-Api (Widechar=UCS2, Unicode) sind Pfade bis 32K dann tatsächlich möglich.

    Montag, 14. Oktober 2019 12:56
  • Oder einfach in Windows die longPaths aktivieren, wäre noch viel einfacher ;)

    gpedit.msc / Computerkonfiguration / Administrative Vorlagen / System / Dateisystem / Lange Win32-Pfade aktivieren = Aktivieren

    Das funktioniert sein Windows 10 1607 bzw. Windows Server 2016
    Samstag, 5. Februar 2022 18:10
  • Jo, und Programme die nicht damit rechnen können trotzdm nicht damit umgehen, da MAX_PATH eine Compiler-Konstante für Programme ist. Ggf. fallen sie damit sogar auf die Nase (Pufferüberscrhreibungen).
    Samstag, 5. Februar 2022 22:50