我有一个预定的批处理脚本,基于它应该在 Thu 运行的日期参数。但它没有按预期工作。
找到下面的代码。
::@echo off
set LOGFILE=D:\New_Folder\SCRIPTTEST\Rundaily1.log
SET RDAY="%date:~0,3%"
if %RDAY%=="Thu" echo "Starting Weekly Matching" >> %LOGFILE%
D:\New_Folder\SCRIPTTEST\Runthursday.bat
exit /b 0
Run Code Online (Sandbox Code Playgroud)
按照上面的代码,如果日期/天匹配“Thu”,它应该写入日志并执行另一个批处理脚本。
但即使在“周四”,它也不写日志也不运行脚本。你能检查一下并帮助解决同样的问题吗?请建议。
IF 命令匹配所有字符,包括引号 -
Thu不匹配"Thu"。因此,以下任一方法都有效:
Run Code Online (Sandbox Code Playgroud)if %RDAY%==Thu ... if "%RDAY%=="Thu" ...
编辑 - 我刚刚意识到你在定义 RDAY 时为值添加了引号。所以我上面黄色的建议不太正确。我更喜欢使用set "RDAY=%date:~0,3%",它不会为值添加引号。但这更多的是风格问题。
因此,大概您的 IF 语句永远不会为真,因为您的机器%DATE%对不以星期几缩写开头的值使用了不同的格式
但是您的脚本还有其他问题:
只有您的日志行是有条件的,星期四脚本将每天运行。这很容易通过在 IF 块中添加括号来解决
if %DATE:~0,3%==Thu (
echo "Starting Weekly Matching" >> %LOGFILE%
D:\New_Folder\SCRIPTTEST\Runthursday.bat
)
Run Code Online (Sandbox Code Playgroud)
%DATE%值的格式取决于区域设置。您的脚本可能无法在另一台机器上运行。您可以使用 WMIC 以与区域设置无关的方式轻松确定是否是星期四:
wmic path win32_localtime get dayofweek | findstr 4 >nul && (
echo "Starting Weekly Matching" >> %LOGFILE%
D:\New_Folder\SCRIPTTEST\Runthursday.bat
)
Run Code Online (Sandbox Code Playgroud)
但是我有一个问题要问您 - 为什么您要安排仅在星期四运行另一批的每日批处理作业?如果您想在星期四运行批处理作业,请使用 Windows 任务计划程序来执行此操作。无需在批处理脚本中确定今天是否是星期四,让调度程序完成工作。
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |