Powershell-Weiterleitung zu einem Variablenwert, der einen Doppelpunkt enthält

782
taz

Gibt es eine Möglichkeit, eine Variable zu verwenden, deren Wert den Doppelpunkt als Dateinamenzeichenfolge in einer Befehlszeilenumleitung enthält? Powershell behandelt den Doppelpunkt immer als Trennzeichen für Laufwerke, unabhängig von den Escape-Zeichen. Wie kann dies geschehen, wenn der Doppelpunkt als Zeichenliteral verwendet wird, das im Ausgabedateinamen enthalten ist?

Beispiel:

$colonVar = "Colon:string" echo "fileContents" > "file$colonVar.txt" 

Erträge

Laufwerk kann nicht gefunden werden Ein Laufwerk mit dem Namen 'fileColon' ist nicht vorhanden.

Können wir stattdessen "fileContents" in eine Datei namens "fileColon: string.txt" schreiben?

Ich war nicht erfolgreich mit einer Kombination aus einfachen oder doppelten Anführungszeichen, Escape-Zeichen, Klammern oder Dollarzeichen und Klammern im Zeichenfolgenwert oder der Umleitungszeichenfolge. Der Teil der Zeichenfolge nach dem Doppelpunkt wird immer als Laufwerk behandelt.

(Verwenden von Powershell 2.0)

1

1 Antwort auf die Frage

2
Ƭᴇcʜιᴇ007

In Windows können Sie keine Datei mit einem Doppelpunkt im Namen haben. Es wird also nicht von PowerShell verhindert, sondern vom Dateisystem. Entfernen Sie den Doppelpunkt und / oder ersetzen Sie ihn durch ein Zeichen, das für Dateinamen gültig ist.

Von https://support.microsoft.com/de-de/kb/177506 :

A filename cannot contain any of the following characters:  \ / : * ? " < > |  
Auf der anderen Seite kann es umgearbeitet werden. Nun, einige: http://stackoverflow.com/questions/10386344/how-to-get-a-file-in-windows-with-a-colon-in -der-Dateiname Gombai Sándor vor 8 Jahren 0
Vielen Dank. Ich ging von der Fehlermeldung aus, dass Powershell, nicht das System, den Befehl am Erfolg hinderte, aber es ist sinnvoll, dass er auf Betriebssystemebene blockiert ist, weil das Betriebssystem es sowieso nicht zulässt. Für den Datensatz unterstützt powershell die Inline-Ersetzung von Text, z. B. `echo" fileContents ">" Datei $ colonVar.txt ".replace (": "," _ ")` oder `$ colonVar =" Colon: string ".replace (" : "," _ ")` taz vor 8 Jahren 2