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

如何在Batch-Script中将PowerShell命令执行结果赋值给变量

解决方案

批处理完整实现代码

将以下内容写入.bat/.cmd脚本即可实现需求:

@echo off
:: 调用PowerShell生成带时区的格式化时间戳,赋值给批处理变量
for /f "delims=" %%a in ('
    powershell -NoProfile -Command "Get-Date -UFormat '%%d-%%m-%%Y--%%R-UTC%%Z' -replace ':', '.'"
') do set "_timestamp=%%a"

:: 测试输出变量值,可根据实际需求删除该行
echo %_timestamp%

如果是直接在CMD命令行中单次执行,将%%替换为单个%即可:

for /f "delims=" %a in ('powershell -NoProfile -Command "Get-Date -UFormat '%d-%m-%Y--%R-UTC%Z' -replace ':', '.'"') do set "_timestamp=%a"

实现说明

  • 批处理没有直接捕获命令行输出赋值给变量的原生语法,需要通过for /f遍历命令输出完成赋值,参数delims=用于禁用默认分隔符,避免时间戳中存在空格、特殊符号时被截断
  • 调用PowerShell时添加-NoProfile参数可以跳过加载用户自定义配置,既提升执行速度,也避免环境配置对输出结果产生干扰
  • 由于%是批处理的变量标识符,传递给PowerShell的UFormat参数内的%需要转义为%%,否则会被批处理提前解析为无效变量,导致命令执行异常
  • 原PowerShell逻辑可简化,无需额外调用ForEach-Object,-replace操作可以直接作用于Get-Date的输出结果

内容的提问来源于stack exchange,提问作者Andreas L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:36:03