Wie der Zugriff auf die Datei-Pfade in der Powershell mit Sonderzeichen?

Ich bin Aufruf von powershell innerhalb einer Java-Anwendung (durch die Windows-Eingabeaufforderung) zum Lesen von verschiedenen Datei-Attribute.

z.B.

powershell (get-item 'C:\Users\erlpm\Desktop\Temp\s p a c e s.txt').creationTime

Ich lege den Pfad der Datei in einfachen Anführungszeichen, weil Leerzeichen enthalten kann.
Es funktionierte gut, bis stieß ich auf ein Datei-Pfad mit eckigen Klammern, die zu sein scheinen interpretiert als ein Platzhalter. Ich konnte es lösen, indem die -literalPath parameter :

powershell (get-item -literalpath 'C:\Users\erlpm\Desktop\Temp\brackets[].txt').creationTime

So weit, So gut ...
Aber Dateipfade enthalten auch einfache Anführungszeichen, Dollarzeichen, kaufmännisches, ... und alle diese Zeichen scheinen zu haben eine spezifische Funktion in der powershell für die die -literalPath parameter scheint nicht zu funktionieren.
Ich habe versucht, umschließt den Pfad mit doppelten Anführungszeichen oder die Flucht mit dem ` - Zeichen, aber das hat mein problem nicht lösen: - entweder(

Irgendwelche Vorschläge auf, wie Sie passieren einen Datei-Pfad zur Powershell was kann die Leerzeichen enthalten, Anführungszeichen, eckige Klammern, kaufmännisches und, dollar-Zeichen, etc. ?

Update:
Jemand hier schon zeigte mir, wie um es zu bekommen arbeiten in Powershell, aber irgendwie ist die Antwort entfernt wurde ?
Wie auch immer, ich Tat, erstellen Sie eine Datei namens $ & ' [].txt.
Diese arbeiten bilden innerhalb Powershell (wird benötigt, um die Flucht der &) :

    PS C:\Users\erlpm> Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"


    Directory: C:\Users\erlpm\Desktop\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2012-08-23     14:22          0 $ & ' [].txt

Aber wenn ich ausführen die gleichen Powershell-Befehl durch die Windows-Eingabeaufforderung, ...

C:\Users\erlpm>powershell Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"

... Ich bekomme diese Fehlermeldung :

    Ampersand not allowed. The & operator is reserved for future use; use "&" to pass ampersand as a string.
At line:1 char:55
+ Get-Item -LiteralPath C:\Users\erlpm\Desktop\Temp\`$ & <<<<  ' [].txt
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : AmpersandNotAllowed

Mithilfe der -command parameter und setzen Sie den powershell-Befehl zwischen {} gibt genau die selbe Fehlermeldung ...

C:\Users\erlpm>powershell -command {Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"}
Könnten Sie ein paar Beispiele für Wege, die nicht arbeiten, und die genaue Fehlermeldung, die Sie bekommen? Sie haben nur Wege so weit, so ist es schwer zu sagen, wo das problem ist.
Ich aktualisiert meine Frage und fügte einige funktionierende und nicht-funktionierende Beispiele. Wie Sie sehen können, kann ich es auf der Arbeit innerhalb der Powershell-Eingabeaufforderung, aber nicht durch executng powershell über die Windows-Eingabeaufforderung.
Ich reproduzierte, Ihr Problem durch erstellen einer Datei namens "$ * ' [].txt". Dann, von einem powershell-Eingabeaufforderung die Eingabe von get-item <tab> und powershell abgeschlossen, die mit dem Namen für mich, aber ich kann nicht fügen Sie abgeschlossen mit dem Namen hier, weil markdown frisst alle Sonderzeichen. Probieren Sie es aus und sehen, ob das hilft.

InformationsquelleAutor jeroen_de_schutter | 2012-08-23

Schreibe einen Kommentar