Konvertiert die Get-ChildItem-Ausgabe in eine Zeichenfolge []

8

Ich habe ein Skript, das eine Liste von Pfaden akzeptiert, die als Array von Strings verarbeitet werden sollen. Ich verwende Get-ChildItem , um diese Pfade zu generieren. Ich bin auf ein interessantes Verhalten bei der Umwandlung von System.IO.FileInfo Objekten in Zeichenfolgen gestoßen.

Beispiel 1:

%Vor%

Beispiel 2:

%Vor%

Beispiel 3: (Mit -Recurse, also ist die Umwandlung in Strings unlogisch und nutzlos)

%Vor%

Beispiel 4:

%Vor%

Das Hinzufügen eines Platzhalters zum Pfad bewirkt, dass die resultierenden Zeichenfolgen vollständige Pfadnamen anstelle von Datei- / Ordnernamen sind. Warum passiert das?

Ich verstehe wie Ich kann dieses Verhalten umgehen und bekomme die Informationen, die ich brauche; Was mich interessiert, ist warum das passiert, da wir nur die Objekte System.IO.FileInfo und System.IO.DirectoryInfo in Strings konvertieren.

    
Nikhil Dabas 12.08.2013, 12:20
quelle

1 Antwort

6

Logische Antwort:

Sie werfen die FileInfo Objekte auf Strings. Wenn Sie gci path ausführen, haben Sie nur Dateien und Verzeichnisse aus diesem Ordner. Es ist also in Ordnung, einfach in den Namen des Elements zu konvertieren.

Wenn Sie gci path\* verwenden, gilt dies für Ordner, und die Konvertierung in Namen ist nicht zulässig. Daher enthält es den Pfad.

Je nachdem, ob Sie den Namen oder den vollständigen Pfad angeben möchten, tun Sie Folgendes:

%Vor%

oder

%Vor%     
manojlds 12.08.2013 12:29
quelle

Tags und Links