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

批处理文件中调用PowerShell Get-ItemPropertyValue单行命令的转义问题

问题根因

你这段代码运行失败的核心原因是批处理的括号块解析规则冲突:

  • 外层使用了if not defined LANGUAGE (的括号包裹代码块,批处理解析器会把代码中所有未转义的)都识别为这个if块的结束标记,直接打断语法结构
  • 你写的PowerShell命令里多处出现),没有做批处理级别的转义,就会被误判为块结束符,导致语法错误

修正后可直接运行的代码

if not defined LANGUAGE (
    for /f "usebackq" %%v in (`PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "(Get-ItemPropertyValue -Path 'HKCU:Control Panel\International\' -Name 'LocaleName'^).Split('-'^)[0]"`) do set "LANGUAGE=%%v"
)

补充说明

  • 如果直接在CMD命令行中测试这段逻辑,需要把%%v替换为%v
  • 取值后可以加echo %LANGUAGE%验证结果是否符合预期,比如区域设置为德语时会输出de

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:27:01