从 powershell 命令输出中获取前一天的日期作为批处理文件中的变量

从 powershell 命令输出中获取前一天的日期作为批处理文件中的变量

场景是这样的。我需要一个前一天的日期(即今天 -1)作为批处理文件中的变量。但如果前一天是星期日(即脚本在星期一运行),它应该返回星期六的日期(即今天 -2)。我试过下面的脚本,但似乎不起作用。有人能帮忙吗?

ECHO STARTING
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -Command "& {if ^(^([Int] ^(Get-Date^).DayOfWeek^) -eq 1^) {get-date^(^(get-date^).addDays^(-2^)^) -uformat "%%d.%%m.%%Y"} Else{get-date^(^(get-date^).addDays^(-1^)^) -uformat "%%d.%%m.%%Y"} }`) DO (SET var=%%F)

ECHO DATE CAPTURED IN VARIABLE IS %var%

我已尝试直接在命令提示符下执行以下命令,并且它运行正常。

powershell -Command "& {if (([Int] (Get-Date).DayOfWeek) -eq 1) {get-date((get-date).addDays(-2)) -uformat "%d.%m.%Y"} Else{get-date((get-date).addDays(-1)) -uformat "%d.%m.%Y"} }

答案1

节省

if (((Get-Date).DayOfWeek.value__) -eq 1) {get-date((get-date).addDays(-2)) -uformat "%d.%m.%Y"} Else{get-date((get-date).addDays(-1)) -uformat "%d.%m.%Y"}

作为 .ps1 文件;例如 C:\Batch\getvar.ps1

然后在批处理脚本中调用它

FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -ExecutionPolicy Bypass -File C:\Batch\getvar.ps1`) DO (SET var=%%F)

相关内容