Переадресация Powershell на значение переменной, содержащее двоеточие

656
taz

Есть ли способ использовать переменную, значение которой содержит символ двоеточия в качестве строки имени файла в перенаправлении командной строки? Powershell всегда рассматривает двоеточие как разделитель дисков, независимо от escape-символов. Как это можно сделать, используя двоеточие в качестве символьного литерала, содержащегося в выходном имени файла?

Пример:

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

доходность

Не могу найти диск. Диск с именем fileColon не существует.

Можем ли мы вместо этого записать «fileContents» в файл с именем «fileColon: string.txt»?

Мне не удалось использовать какую-либо комбинацию одинарных или двойных кавычек, escape-символов, скобок или знака доллара и скобок в строковом значении или строке перенаправления. Часть строки после двоеточия всегда рассматривается как диск.

(Использование Powershell 2.0)

1

1 ответ на вопрос

1
Ƭᴇcʜιᴇ007

In Windows you can't have a file with a colon in it's name, so it's not PowerShell that's preventing it, it's the file system. Strip out the colon, and/or replace it with a character that's valid for filenames.

From https://support.microsoft.com/en-us/kb/177506:

A filename cannot contain any of the following characters: \ / : * ? " < > | 
С другой стороны, это можно обойти ... ну, некоторые: http://stackoverflow.com/questions/10386344/how-to-get-a-file-in-windows-with-a-colon-in -The-файл Gombai Sándor 8 лет назад 0
Благодарю. Из сообщения об ошибке я предположил, что powershell, а не система, блокирует выполнение команды, но имеет смысл, что она блокируется на уровне ОС, потому что ОС все равно не позволяет этого. Для записи PowerShell поддерживает замену встроенного текста, например, `echo" fileContents ">" file $ colonVar.txt ".replace (": "," _ ")` или `$ colonVar =" Colon: string ".replace (" :», "_")` taz 8 лет назад 1