IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Создание батника с переводом времени (http://www.imho.ws/showthread.php?t=109915)

QLe[X] 19.10.2006 04:38

Создание батника с переводом времени
 
Здравствуйте товарищи!

Помогите написать bat файл. Задача: необходимо, чтобы при запуске батника дата переводилась на определенное число, месяц и год. Далее запускалась определенная программа (какая не имеет значения, упор не на это). Затем дата возвращалась на место.

Например: перед стартом батника была дата 19.10.2006
затем становится 15.08.2005 и далее опять становится 19.10.2006

Alex Dark 19.10.2006 07:38

1 тебе нудна установка даты конкретной или ты ее вычситывать как то должен.
2 какая операционка
3 одним батом тут похоже не обойтись

Borland 19.10.2006 10:30

Если дата конкретная (а не высчитываемая):
Код:

@echo off
set TEMPDATE=%DATE%
date 15.08.2005
start /w программа.exe
date %TEMPDATE%
set TEMPDATE=
exit

Если прога консольная - start /w можно пропустить.
Особенность: если за время работы батника меняется дата - дата на компе после его выполнения будет отставать.
Обход особенности:
Код:

@echo off
REM set TEMPDATE=%DATE%
date 15.08.2005
start /w программа.exe
REM date %TEMPDATE%
REM set TEMPDATE=
net time \\TIMESERVER /set /yes
exit

В качестве TIMESERVER можно использовать любой комп в локальной сети.

Alex Dark 19.10.2006 11:28

Я тут во время обеда вот что придумал

Код:

Cls
Echo Off
Set d1=%date%
set d2=01.01.2005
echo Установки D1 и D2
echo "%D1%"
echo "%D2%"

echo Сегодня
Date /t

echo Установка новой даты
Date %D2%

echo Новая дата
Date /t

Прога.exe

echo Возврат старой даты
Date %D1%
echo Сегодня
Date /t
Echo On

Принципиально от предложенного Borland не отличается, кроме
start /w программа.exe не пройдет
надо просто
программа.exe
иначе пока прога запустится в другом процессе дата вернется обратно из прошлого

QLe[X] 19.10.2006 12:21

Дата конкретная.

@echo off
set TEMPDATE=%DATE%
date 15.08.2005
start /w программа.exe
date %TEMPDATE%
set TEMPDATE=
exit

Очень помогло выше написанное. Благодарю!

Русские символы почему-то батник не хочет принимать?!

LightImage 19.10.2006 13:01

Цитата:

QLe[X]:
Русские символы почему-то батник не хочет принимать?!
Нужно в кодировке CP-866 текст записывать, в 1251 не пойдёт.
Чтобы записать текст 866 кодировки в блокноте, надо в меню Формат/Шрифт выбрать Terminal.

Borland 19.10.2006 13:55

Цитата:

Alex Dark:
start /w программа.exe не пройдет
надо просто
программа.exe
иначе пока прога запустится в другом процессе дата вернется обратно из прошлого
Нифига подобного! :biggrin:
Дата меняется для всей системы (а не только для конкретного процесса).
start /w запускает указанный процесс и ждёт его завершения.
Для консолькой проги, по большому счёту, пофиг, запускаться ли в отдельной консоли по start /w или в исходной.
А вот для GUI проги запуск без start /w приведёт как раз-таки к тому, что пока прога запускается батник уже выставит правильную дату...

QLe[X] 19.10.2006 14:32

Цитата:

LightImage:
Нужно в кодировке CP-866 текст записывать, в 1251 не пойдёт.
Чтобы записать текст 866 кодировки в блокноте, надо в меню Формат/Шрифт выбрать Terminal.
Пробовал русские буквы все равно пишет закарючками даже в блокноте при Terminal`e

Kernel::Panic 07.11.2006 19:31

Можно кстати попробовать WSH скрипт сделать такое выполняющий... тут и функционал нарастить можно будет

XPEHOMETP 10.11.2006 10:49

Я, может, зря суюсь с советами, но есть просто куча программ, которые специально написаны для облегчения запуска каких-либо прог в неком виртуальном времени. Если погуглить на antitimer, antitrial, timeback, fuckdate, можно много любопытного найти.

Don King 10.11.2006 15:00

Цитата:

QLe[X]:
Пробовал русские буквы все равно пишет закарючками даже в блокноте при Terminal`e
Да возьми просто в Farовском редакторе напиши. Только F8 нажми, если нужно, чтобы переключиться в DOSовскую раскладку.


Часовой пояс GMT +4, время: 20:33.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.