在批处理文件中查找星期几?(Windows Server 2008)

在批处理文件中查找星期几?(Windows Server 2008)

我有一个从批处理文件运行的进程,我只想在一周中的某一天运行它。
是否可以获取星期几?

我发现的所有示例都以某种方式依赖“date /t”返回“星期五,2009 年 12 月 11 日”,但是在我的计算机上,“date /t”返回“2009 年 12 月 11 日”。那里没有工作日。

我已经检查了我机器的“区域设置”,长日期格式确实包含星期几。短日期格式不包含,但我真的不想改变这一点,因为它会影响我做的很多事情。

答案1

我参加这个聚会有点迟了,但是这会告诉你是星期几:

wmic 路径 win32_localtime 获取星期几

使用批量 for 循环获取输出,这样您就拥有了可测试的星期几条件。

答案2

这是现代系统上 BAT 脚本的正确答案:

@echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%

输出:

Saturday

用法:

@echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
if %dow% == Saturday goto shutdown
if %dow% == Sunday goto shutdown
exit

:shutdown
shutdown /s /f /t 90

我将其用于每天从 BIOS 自动启动的 PC,这些 PC 没有排除周末的选项。

另外:ACPI 是一种更可靠的方法,并允许使用虚拟 BAT 脚本,例如exit在 Windows 计划任务中使用特定日期,使用唤醒计算机以运行此任务选项。

答案3

这是一个批处理文件,它将把所有日期和时间信息放入变量中,但这取决于您在机器上设置了适当的日期格式。此外,顺序可能需要根据本地日期格式进行调整,我不确定。

@echo off
for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
set WD=%%i
set D=%%j
set M=%%k
set Y=%%l
) 

for /F "tokens=1-4 delims=: " %%i in ('time /t') do (
set H=%%i
set Mn=%%j
set AP=%%k
)

if "%AP%"=="PM" set /A H=%H%+12

echo %WD% %D%/%M%/%Y% - %H%:%Mn%

您想要的位在 %WD% 中。

答案4

@echo off

:set the variables
for /f %%C in ('wmic path Win32_LocalTime Get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List 2^>nul ^| find "="') do @set current%%C

:display the variables
set current

现在剩下的就是如果日期和月份小于 10,就在它们前面加上零。

相关内容