And*_* L. 0 powershell timestamp batch-file batch-processing timestamp-with-timezone
我想在 PowerShell CLI 中以及批处理脚本中实现我可以做的事情:
PS C:\Users\andreas.luckert> $timestamp = Get-Date -UFormat "%d-%m-%Y--%R-UTC%Z" | ForEach-Object { $_ -replace ":", "." }
PS C:\Users\andreas.luckert> echo $timestamp
26-11-2021--15.55-UTC+01
Run Code Online (Sandbox Code Playgroud)
现在,在我的批处理脚本中,我尝试了类似于以下的方法
SET _timestamp=('Get-Date -UFormat "%d-%m-%Y--%R-UTC%Z" | ForEach-Object { $_ -replace ":", "." }')
Run Code Online (Sandbox Code Playgroud)
然而,它不起作用。
像这样的解决方案对我来说看起来有点老套,批处理变量的一般说明在这种情况下没有帮助,并且与我在一开始提到的漂亮干净的 PowerShell 命令相比,所有这些方法在语法方面都非常丑陋。此外,它们都不包括时区,这对我来说很重要。
您需要调用powershell.exeWindows PowerShell 的CLI,以便从批处理文件执行PowerShell命令- 请注意,此类调用的成本很高。
pwsh.exe您需要通过for /f批处理文件中的循环来解析输出;从会话中运行for /?以获取帮助cmd.exe(命令提示符)。
您需要将批处理文件应逐字处理的字符加倍 。%
把它们放在一起:
@echo off
for /f "usebackq delims=" %%i in (`
powershell -c "(Get-Date -UFormat '%%d-%%m-%%Y--%%R-UTC%%Z') -replace ':', '.'"
`) do set _timestamp=%%i
echo %_timestamp%
Run Code Online (Sandbox Code Playgroud)
注意:考虑放置-noprofile在前面-c以抑制 PowerShell配置文件的加载,以获得更好的性能和可预测的执行环境。
| 归档时间: |
|
| 查看次数: |
4686 次 |
| 最近记录: |