Рубрики
cmd \ vbs \ scripts

Как из bat файла обойти проверку даты.

Описание:

Некоторое программное обеспечение при запуске проверяет текущую системную дату. 
Если дата больше, чем заложено разработчиком, то программа не запускается. 
Например, разработчик считает, что версия программы может отработать месяц, 
а потом пользователь должен будет установить обновленную версию программы.

Решение:

set tempdate=%date:~-10%
date 01-01-04
notepad.exe
date %tempdate%

В данном примере текущая системная дата сначала сохраняется в переменной, 
затем (во второй строке) системная дата устанавливается на 1-е января 2004 года, 
а потом вызывается программа, которая проверяет системную дату. 
В данном примере это Блокнот. 
До тех пор, пока открыт Блокнот, пакетный файл находится в ожидании,не завершаясь и не переводя системную дату обратно. 
Как только Блокнот будет закрыт, пакетный файл продолжит свое выполнение и установит системную дату на сохраненное 
в переменной tempdate значение, т.е. на то, которое было до запуска пакетного файла.
Не забывайте, что если путь до файла, которым запускается программа, 
содержит пробелы, то его (путь) необходимо заключить в кавычки. 

Решение:

Если программа проверяет текущую системную дату только при своем запуске и во время работы больше этого не делает, 
то пакетный файл можно модифицировать, добавив перед именем исполняемого файла программы оператор start
В этом случае, пакетный файл изменит системную дату, запустит программу и не дожидаясь ее завершения вернет дату на ту, 
которая была до запуска программы.

set tempdate=%date:~-10%
date 01-01-04
start notepad.exe
date %tempdate%