场景是这样的。我需要一个前一天的日期(即今天 -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)