目标:设置两个选项来更改然后恢复日期,具体取决于哪个选项有效。
背景:用于 2005 年过时的 Windows p2p 应用程序;公司于 2006 年关闭。此版本可在有限时间内免费下载和使用。因此,日期需要在它启动之前改回几秒钟。有很多人使用这个程序。即:这是一个社区项目。
这个项目的历史: 一种技术 (%BEFOREDATE%) 适用于 Win 2K 到 Windows 7。另一种技术 (%CURDATE%) 适用于 Windows 8 但不是更早。最近有人注意到第一种技术确实适用于他们的 Win 8,但不是 %CURDATE%,这与我的 Win 8 相反。
我发现将日期恢复到今天会产生某种错误,即使它成功将其发送到错误处理部分(错误处理程序退出进程。无论如何基本上与 EXIT 相同。)
当错误的选项运行程序/脚本时,它就会挂起。
如何正确编写它以便它处理任一选项并且如果遇到不适用于该特定系统的选项则不会挂起?我不知道日期正确更改时会产生什么错误。
处理 Win 8 选项的代码部分:
:ver_8
SET BEFOREDATE=%date:~4,2%-%date:~7,2%-%date:~10,4%
FOR /F "TOKENS=1* DELIMS= " %%E IN ('DATE/T') DO SET CURDATE=%DATE%
DATE 07-01-05
@echo off
PING -n 5 127.0.0.1 > NUL 2>&1
@echo off
DATE %BEFOREDATE%
ping -invalid-arg || goto :ver_2
goto exit
:ver_2
DATE %CURDATE%
ping -invalid-arg || goto :error
goto exit