我有以下代码
$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导出到单独的行。如果有人能提供帮助,那就太好了。
答案 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]唯一的解释是将转义序列''
识别为嵌入式'
。