从 cmd 调用 powershell 命令时出错
Errors when calling powershell commands from cmd
我正在尝试 return 为我的批处理脚本赋值。
在 powershell 中这个脚本工作正常:
PS> (Get-Date -Date "9.04.2017" -Uformat "%w.%Y-%m-%d").Replace("0.", "7.")
7.2017-04-09
当我批量尝试时:
for /f %%a in ('powershell ^(Get-Date -Uformat "%%w.%%Y-%%m-%%d"^).Replace^(^'0.^', ^'7.^'^)') do set datestamp=%%a
echo %datestamp%
我遇到错误,但这个脚本运行正常:
for /f %%a in ('powershell ^(get-date^).DayOfWeek') do set weekday=%%a
for /f %%a in ('powershell Get-Date -Uformat "%%u.%weekday%.%%Y-%%m-%%d"') do set datestamp=%%a
echo %datestamp%
我做错了什么?
为了避免需要转义单引号,请使用 useback
parameter.Put 双引号中的所有内容以避免需要转义括号(请注意 -UFormat 也接受格式的单引号):
for /f "usebackq" %%a in (`"powershell (Get-Date -Uformat '%%w.%%Y-%%m-%%d').Replace('0.', '7.')"`) do set datestamp=%%a
echo %datestamp%
我发现了我的错误。我需要转义逗号字符。
现在看起来很奇怪,但是有效。
for /f %%a in ('powershell ^(Get-Date -Date "9.04.2017" -Uformat "%%w.%%Y-%%m-%%d"^).Replace^(^'0.^'^,^'7.^'^)') do set datestamp=%%a
echo %datestamp%
我正在尝试 return 为我的批处理脚本赋值。 在 powershell 中这个脚本工作正常:
PS> (Get-Date -Date "9.04.2017" -Uformat "%w.%Y-%m-%d").Replace("0.", "7.")
7.2017-04-09
当我批量尝试时:
for /f %%a in ('powershell ^(Get-Date -Uformat "%%w.%%Y-%%m-%%d"^).Replace^(^'0.^', ^'7.^'^)') do set datestamp=%%a
echo %datestamp%
我遇到错误,但这个脚本运行正常:
for /f %%a in ('powershell ^(get-date^).DayOfWeek') do set weekday=%%a
for /f %%a in ('powershell Get-Date -Uformat "%%u.%weekday%.%%Y-%%m-%%d"') do set datestamp=%%a
echo %datestamp%
我做错了什么?
为了避免需要转义单引号,请使用 useback
parameter.Put 双引号中的所有内容以避免需要转义括号(请注意 -UFormat 也接受格式的单引号):
for /f "usebackq" %%a in (`"powershell (Get-Date -Uformat '%%w.%%Y-%%m-%%d').Replace('0.', '7.')"`) do set datestamp=%%a
echo %datestamp%
我发现了我的错误。我需要转义逗号字符。 现在看起来很奇怪,但是有效。
for /f %%a in ('powershell ^(Get-Date -Date "9.04.2017" -Uformat "%%w.%%Y-%%m-%%d"^).Replace^(^'0.^'^,^'7.^'^)') do set datestamp=%%a
echo %datestamp%