You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本调用PowerShell命令时引号使用错误导致仅输出‘powershell’的问题求助

批处理脚本只输出powershell的问题解决办法

嗨,我来帮你搞定这个批处理的问题!你的脚本只输出powershell,核心有两个原因:

问题根源

  • 你的for /f命令默认会把空格、制表符当成分隔符,只提取第一个分隔前的内容——所以它把powershell当成了第一个片段,直接赋值给了%%a,自然输出只有这个词。
  • 另外,你用双引号("命令")包裹PowerShell命令的方式不对,for /f需要用单引号('命令')来识别这是要执行的命令,双引号在这里只是把整个字符串当成普通文本,根本没触发PowerShell执行。

正确解决方案

方法一:直接修正for /f写法

把for /f的执行逻辑和分隔符设置改对,就能直接获取PowerShell的计算结果:

@echo off
for /f "delims=" %%a in ('powershell -c "[math]::Round((Get-ChildItem 'C:\Program Files (x86)\Steam\' -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)"') do set "test=%%~a"
echo %test%

这里的关键改动:

  • 用'powershell ...'替代原来的双引号,告诉for /f这是要执行的命令
  • 添加"delims="禁用默认分隔符,确保把PowerShell输出的完整数值赋值给变量

方法二:用临时文件中转(更直观)

如果觉得命令嵌套容易晕,可以先让PowerShell把结果写到临时文件,再读取到变量里:

@echo off
powershell -c "[math]::Round((Get-ChildItem 'C:\Program Files (x86)\Steam\' -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)" > temp.txt
set /p test=<temp.txt
echo %test%
del temp.txt

内容的提问来源于stack exchange,提问作者Datasmuggler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:17:27