如何在CMD中将PowerShell命令执行结果存入变量并调用
问题原因
你原来的写法不符合CMD的语法规则,有两处核心错误:
- CMD设置变量无需加
$前缀,set $path会把$识别为变量名的一部分,后续调用也无法通过%path%取到值;另外不建议直接用path作为变量名,会覆盖系统内置的PATH环境变量,导致其他命令无法正常执行。 - CMD原生不支持直接将命令执行结果赋值给变量,必须借助
for /f命令捕获命令输出。
正确写法
批处理文件(.bat/.cmd)中使用
@echo off :: 捕获PowerShell返回的当前路径 for /f "delims=" %%i in ('powershell -Command "(Get-Location).Path"') do set "current_dir=%%i" :: 输出验证结果 echo %current_dir%
直接在CMD交互窗口中使用
把双百分号改为单百分号即可:
for /f "delims=" %i in ('powershell -Command "(Get-Location).Path"') do set "current_dir=%i" echo %current_dir%
补充说明
delims=参数的作用是禁用分隔符,避免路径中存在空格、特殊符号时被截断,保证返回完整路径。- PowerShell执行的命令需要用引号包裹,避免命令内的特殊符号被CMD提前解析导致执行错误。
内容的提问来源于stack exchange,提问作者SKIKDA
相关产品推荐
相关产品推荐

