我想在批處理腳本中也能在 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
現在,在我的批處理腳本中,我嘗試了類似於以下的方法
SET _timestamp=('Get-Date -UFormat "%d-%m-%Y--%R-UTC%Z" | ForEach-Object { $_ -replace ":", "." }')
然而,它不起作用。
像這樣的解決方案對我來說看起來有點 hacky,批處理變量的一般說明在這種情況下沒有幫助,與我在開頭提到的漂亮乾淨的 PowerShell 命令相比,所有這些方法在語法上都非常醜陋。此外,它們都不包括時區,這對我來說很重要。
您需要調用powershell.exe
Windows 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%
注意:考慮放置-noprofile
before-c
以抑制加載 PowerShell 的配置文件,以獲得更好的性能和可預測的執行環境。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句