将变量添加到文本字符串并在powershell中添加新行

时间:2016-06-15 20:25:16

标签: powershell

我有以下代码

$scriptpath = "C:\Test"
$scriptname = "mount.bat"
$myimage = Read-Host 'Enter the file name of your image'
if (Test-Path $scriptpath\$scriptname) {
 Remove-Item $scriptpath\$scriptname
}
Add-Content $scriptpath\$scriptname ':Loop 'n "C:\Program  
Files\file.exe" -f \\host\"Shared Folders"\$myimage -m V: `n if not 
%errorlevel% equal 0 goto :Loop'

我无法使用powershell在输出批处理文件中正确输出变量,它只是说" $ myimage"而不是文件名。我尝试过使用休息时间`'符号,但没有运气。我也无法将powershell导出到单独的行。如果有人能提供帮助,那就太好了。

1 个答案:

答案 0 :(得分:0)

由于您在字符串中使用(a)变量引用($myimage)和(b)转义序列(如`n(表示换行符),因此必须使用 double 引用以获得预期结果。

单个 - 引用字符串处理其内容字面 - 不进行插值。 [1]

此外,由于您的字符串包含嵌入双引号,因此必须将其转义为`"

这是一个固定版本;请注意,为了便于阅读,我使用了实际的换行符(而不是单行字符串中的`n转义序列):

$myImage = 'test.png'
":Loop
`"C:\ProgramFiles\file.exe`" -f \\host\`"Shared Folders`"\$myimage -m V:
if not %errorlevel% equal 0 goto :Loop"

[1]唯一的解释是将转义序列''识别为嵌入式'