PowerShell使用变量拼接路径打印PNG文件失败如何解决?
问题根源
PowerShell的字符串规则中,单引号包裹的内容会被当作纯字面量处理,不会解析内部的$变量,你写的'/p $folder$photo /pt "Microsoft Print to PDF"'里的$folder、$photo没有被替换成实际路径值,系统只能将其识别为相对路径,到当前用户目录下查找,自然会报错。
解决方案
方案1:使用双引号包裹参数+转义内部引号
双引号支持变量解析,内部需要嵌套引号时用反引号`转义即可:
$photo = "5555.png" $folder = "D:\simplecodegenerator\" Start-Process -filepath "C:\windows\system32\mspaint.exe" -argumentlist "/p `"$folder$photo`" /pt `"Microsoft Print to PDF`""
方案2(更稳妥,避免路径空格问题):先拼接完整路径,用数组传参
将ArgumentList按参数拆分作为数组传递,PowerShell会自动处理空格和引号转义,出错概率更低:
$photo = "5555.png" $folder = "D:\simplecodegenerator\" # 用Join-Path拼接路径,自动处理分隔符兼容问题 $fullPath = Join-Path -Path $folder -ChildPath $photo Start-Process -filepath "C:\windows\system32\mspaint.exe" -ArgumentList @( '/p', $fullPath, '/pt', "Microsoft Print to PDF" )
内容的提问来源于stack exchange,提问作者Edwin
相关产品推荐
相关产品推荐

