PowerShell中Start-Process创建含空格路径目录失败求助
带空格路径创建目录的解决方案
你的问题出在多层嵌套调用时的参数引号转义逻辑混乱,导致带空格的路径被拆分为多个参数,无法被正确识别。以下是两种可行的解决方案:
方案一:直接用PowerShell原生命令创建目录(推荐)
避免嵌套调用cmd.exe,直接使用PowerShell的New-Item命令创建目录,参数传递更简洁可靠:
$cred = Get-Credential $d = "C:\Call Balance" # 构造PowerShell命令参数数组,自动处理空格路径的转义 $psArgs = @( '-noprofile', '-command', "New-Item -Path `"$d`" -ItemType Directory -Force" ) $result = (Start-Process powershell.exe -Credential $cred -ArgumentList $psArgs -NoNewWindow -Wait -Passthru).ExitCode $result
方案二:正确转义参数后调用cmd.exe的mkdir
如果必须依赖cmd.exe的mkdir,需要确保带空格的路径被作为单个参数传递,通过正确的引号转义实现:
$cred = Get-Credential $d = "C:\Call Balance" # 先给带空格的路径添加引号,再构造cmd执行命令 $cmdCommand = "mkdir `"$d`"" $psArgs = @( '-noprofile', '-command', "Start-Process cmd.exe -Verb RunAs -ArgumentList '/c', `"$cmdCommand`" -Wait" ) $result = (Start-Process powershell.exe -Credential $cred -ArgumentList $psArgs -NoNewWindow -Wait -Passthru).ExitCode $result
核心说明
- 使用数组传递
-ArgumentList参数时,PowerShell会自动处理每个元素的引号转义,避免手动拼接字符串时的多层引号混乱。 -Force参数可以确保目录存在时不会报错,直接返回成功状态。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

