格式化字符串

时间:2017-01-30 11:27:16

标签: powershell

在我的命令字符串中使用"时,双引号会被解释。

$printername="Intouch Printer"
print($printername)

$command ='D:\spool12\spool.exe '+ $_.FullName + ' "'+ $printername+'"'
print($command)
iex $command

我正在执行此代码时收到此信息:

> D:\spool12\spool.exe D:\Spool Files-20170113T061110Z\Spool Files\Un
> Readable\creame and  fudge\00143.SPL IntouchPrinter

相反,我希望它像:

> D:\spool12\spool.exe D:\Spool Files-20170113T061110Z\Spool Files\Un
> Readable\creame and  fudge\00143.SPL "IntouchPrinter"

3 个答案:

答案 0 :(得分:4)

我更喜欢在这种情况下使用格式字符串

$command = 'D:\spool12\spool.exe {0} "{1}"' -f $_.FullName, $printername

答案 1 :(得分:0)

你也可以像这样包装字符串:

$command = @"
D:\spool12\spool.exe "Intouch Printer"
"@
iex $command

答案 2 :(得分:0)

阅读About Quoting Rules,了解您需要了解的关于引号和转义它们的内容。

在您的情况下,您需要在整个命令周围使用双引号,然后使用反引号来转义$printername周围的引号。

您还需要使用Subexpression operator $(),以便正确评估FullName属性:

$command = "D:\spool12\spool.exe $($_.FullName) `"$printername`""