将双引号添加到变量以转义空间

时间:2016-02-10 07:14:24

标签: powershell

我正在运行一个脚本,其中包含$ FileName变量,其中包含带空格的绝对路径。由于目录名称和文件名中的空间,脚本无法在不查找实际路径的情况下执行。我只需要在双引号中添加$ FilePath。我应该如何在字符串的开头和结尾添加双引号?

例如

"X:\Movies\File One\File One.txt"

脚本:

$FilePath = Join-Path $Path $($Dir + "\" + $File + “.txt”)
$FilePath

Current OutPut:

X:\Movies\File One\File One.txt

4 个答案:

答案 0 :(得分:3)

除了反引号转义符(`)之外,您还可以使用-f格式运算符:

$FilePath = Join-Path $Dir -ChildPath "$File.txt"
$FilePathWithQuotes = '"{0}"' -f $FilePath

这将确保$FilePath在放入字符串

之前展开

答案 1 :(得分:1)

$FilePath = Join-Path $Path $($Dir + "\" + $File + “.txt”)
"`"$FilePath`""

...会输出......

"X:\Movies\File One\File One.txt"

这是variable expansion in strings的一个例子。

当然,如果您要引用的路径本身可以包含"引号,例如在将来" powershell for linux"中,您需要转义{{ 1}}以特定于上下文的方式。

答案 2 :(得分:0)

其中任何一种都可以工作:

$FilePath1 = """" + (Join-Path $Path $($Dir + "\" + $File + ".txt")) + """"
$FilePath2 = "`"" + (Join-Path $Path $($Dir + "\" + $File + ".txt")) + "`""
$FilePath3 = '"{0}"' -f (Join-Path $Path $($Dir + "\" + $File + ".txt"))
$FilePath4 = '"' + (Join-Path $Path $($Dir + "\" + $File + ".txt")) + '"'
$FilePath5 = [char]34 + (Join-Path $Path $($Dir + "\" + $File + ".txt")) + [char]34

答案 3 :(得分:0)

最快的解决方案(但有点难看),可以在任何字符串周围加上引号:

$dir = "c:\temp"
$file = "myfile"
$filepath = [string]::Join("", """", $dir,"\", $file, ".txt", """")