Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > batch file


Автор: Artiom 6.12.2005, 14:43
У меня есть простенький batch, который запускает программку. можно ли чтобы он добавлял в реестр ключик со значением текущей даты? Конечно программку написать проще, но счас не могу.

А вообще-то надо чтобы один ключ в реестре всегда одержал текущую дату (06.12.2005). Можно это как-то сделать стандартными средствами? А то я до компилятора доберусь только в четверг-пятницу

Автор: redona 6.12.2005, 15:54
можно сделать следующее написать простенкий реговский файлик, а запускать его уже из батника:

Пример:

имя файла i.reg
Цитата
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppToService_SMService]
@="Service"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\AppToService_SMService]
@="Service"


батник
Цитата
reg import i.reg
copy AppToService.exe c:\windows\system32\AppToService.exe
copy sm.exe c:\windows\system32\sm.exe
cd c:\WINDOWS\system32\
AppToService.exe /Install sm.exe /Name:"SMService" /Startup:A


за пример сорри, выдрал из написанного!!! smile

Автор: Artiom 6.12.2005, 16:08
так проблема чтобы дата всегда была текущая! нет ли какой переменой типа TODAY?

Автор: redona 6.12.2005, 16:51
date - теку щую дату дает и просит внести новую

а лучше найди справочник по досу там ето все есть, жаль у мя под рукой его нема, с головы не вспомнишь, но вообще по моему можно сделать то что тебе надо

извини что мало инфы сказал то что помнил, только это вопрос скорее к спецам доса

Автор: Snowy 6.12.2005, 17:10
Если бы кто напомнил, как взять строку из текстового файла...
Код

@echo off
date /T >a.aaa
reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v << a.aaa
del a.aaa > nul

вот вместо << a.aaa нужно вставить вход из текстового файла.

Автор: Snowy 6.12.2005, 17:35
Может тебе подойдет файл, а не реестр?
Код

date /T >> C:\Windows\starts.log

Автор: Artiom 6.12.2005, 17:40
Цитата(Snowy @ 6.12.2005, 16:35)
Может тебе подойдет файл, а не реестр?

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

Автор: Artiom 6.12.2005, 18:14
читать из файла more
пишу так
Код

reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v more <d.txt

но выдает что "value more exists, overwrite (y\no?)
но если добавить ключик \y
Код

reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v more <d.txt /y

то "слишком много аргументов командной строки"

Автор: Artiom 6.12.2005, 18:30
делаю уже так
Код

reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v DateFrom /t REG_SZ  /d more <d.txt /f

в реестр пишется просто "/f"

Автор: Snowy 6.12.2005, 18:35
Код

reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v date /f /d 06.12.2005

Так все пишет без вопросов.
Проблема в том, как строку не руками прописать, а взять из файла или из результата комманды date /T
Не помню как оформить конвейер.

Автор: Snowy 6.12.2005, 18:59
Угу. Прочитал про перенаправление и конвейеры. Бесполезно.
Ничего не выйдет.

Автор: LSD 6.12.2005, 22:48
Код
echo off
set file_name=temp34567889.reg

echo REGEDIT4 > %file_name%
@echo >> %file_name%
echo [HKEY_LOCAL_MACHINE\SOFTWARE\SuperSoft\MegaProg] >> %file_name%
echo "Time"="%time%" >> %file_name%

start/wait regedit -s %file_name%

del temp34567889.reg

Автор: Snowy 6.12.2005, 22:57
smile Почти так. Ну тогда нужно:
Код

reg ADD HKCU\Software\WinRAR\Interface\MainWin\qqq /v date /f /d %date%

Добавлено @ 23:00
Цитата(LSD @ 6.12.2005, 22:48)
@echo >> %file_name%

Здесь: echo. >> %filename%
Оказывается есть готовые переменные, а мы тут голову ломаем...
Только в 98 их нет, если я не ошибаюсь.

Автор: LSD 6.12.2005, 23:07
Цитата(Snowy @ 6.12.2005, 22:57)
Только в 98 их нет, если я не ошибаюсь.

Мне к сожалению проверить негде.

Цитата(Snowy @ 6.12.2005, 22:57)
Здесь: echo. >> %filename%

Насчет точки ты прав, только у меня как-то и без нее сработало, но теперь это фокус не повторяется smile

Автор: Artiom 7.12.2005, 10:33
Цитата(Snowy @ 6.12.2005, 21:57)
Только в 98 их нет, если я не ошибаюсь

Точно! У меня заработало, а на 98 (где и надо!!!) нет

Автор: Измайлов Ф.В. 9.12.2005, 17:17
Жаль увидал тему слишком поздно, но может кому пригодится...
Создаем файл reg.vbs с содержимым:
Код

set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.RegWrite "HKCU\MyRegKey\String", Date


Вместо HKCU\MyRegKey\String указать свой параметр.

Автор: Artiom 12.12.2005, 12:36
Измайлов Ф.В.
проблемка с эти кодом: в Win98 число записывается в виде dd.mm.yy, а это вызывает некорректную работу программы. надо dd.mm.yyyy (хотя в XP все нормуль). можно это как-то поправить?

Автор: Snowy 12.12.2005, 12:47
Цитата(Artiom @ 12.12.2005, 12:36)
надо dd.mm.yyyy (хотя в XP все нормуль). можно это как-то поправить?

В региональных настройках выбрать нужный формат даты.

Автор: Artiom 12.12.2005, 13:12
Цитата(Snowy @ 12.12.2005, 11:47)
В региональных настройках выбрать нужный формат даты.

не хотелось бы - я не знаю, что еще может быть на это завязано. там стоит всякий специальный софт, с которым я не знаком.

Автор: Garik 12.12.2005, 13:25
Надо выдергивать из даты последние 2 символа и добавлять к ним 20. Вот простенький скрипт, превращающий дату вида dd.mm.yy в dd.mm.yyyy:
Код

dim zz
zz = Date
if Len(zz)=8 then
    zz=Left(zz,6)+"20"+Right(zz,2)
end if
msgbox zz

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)