Войти

Показать полную графическую версию : [решено] Файл должен открываться один раз в сутки через FC


klenb
03-05-2010, 17:36
Здравствуйте!
Надо разработать командный файл, который бы запускал бы какой-либо файл один раз в сутки. То есть, если файл запускается первый раз в сутки, то он запускает какой-либо файл. Если файл уже запускали сегодня, то файл ничего не делает. Использовать для сравнения дат команду FC.

Например,

@ECHO OFF
date /t >datenow.txt
if exist datefile.txt (
fc datenow.txt datefile.txt >1.txt
if exist 1.txt (find "FC" 1.txt
goto bad)
)else goto good

:good
date /t >datefile.txt
start F:\d\eie.txt

:bad
exit


В общем недоработанная программа, не понимаю как сделать так чтобы он после сравнения файлов, сделал два условия:
1) если файлы одинаковые то, не открывать
2) если файлы разные то открывать

seriych
03-05-2010, 18:46
klenb,
@ECHO OFF
set old="datefile.txt"
set now="datenow.txt"
set program="notepad"
set zapuskali=no
date /t >%now%
fc %now% %old%|find "FC"&&set zapuskali=yes
del /f /s /q %now%
if %zapuskali%==no (
date /t >%old%
start "" %program%)
exit
Вроде работает. Переменные old и now задают файлы даты предыдущего и текуго запуска батника. Наличие этих файлов до первого запуска батника не обязательно. Переменная program задает путь к запускаемой программе. В переменная zapuskali сохраняем результат поиска команды find в выводе команды fc. Если нашли в выводе слово FC, то это значит, что fc выдало "FC: различий не найдено", значит файл уже запускали сегодня. Если же не нашли, то записываем в %old% текущую дату и запускаем нужную программу.
P.S. Строка del /f /s /q %now% не обязательно- просто удаляет нужный только в момент сравнения файл %now%

klenb
04-05-2010, 07:45
Действительно, так легче)
Спасибо




© OSzone.net 2001-2012