Войти

Показать полную графическую версию : бат файл замены параметра в реестре с учетом текушего времени(в 16ричном значении)


chapun
23-12-2014, 01:45
Приветствую.
очень нужна ваша помощь :help:
задача такая-нужно менять параметр ключа HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Installdate
со значением например "InstallDate"=dword:513ba2f5 на текущюю дату(в фомате в 16ричной системы),чтобы при запуске бат файла,менялась дата на текущую,а затем запускалась программа например allip.exe
как это будет выглядеть в виде бат файла,можно ли это реализовать(для автоматизации процесса)
винда хр
Спасибо за ответ.

Georgio
23-12-2014, 16:46
@echo off
setlocal enableextensions

for /f %%i in ('
mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(DateDiff("S","01/01/1970"+Chr(32)+"00:00:00",Now))&Close()"
') do cmd /c exit /b %%i
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallDate /t REG_DWORD /d 0x%=ExitCode% /f

start "" "allip.exe"

endlocal
exit /b 0

Foreigner
23-12-2014, 17:33
chapun, В 2015-ом заменить 1388534400 (на 2014) на 1420070400 (юникс-тайм: кол-во сек с 01.01.1970 до 01.01.2015)

@echo off
setlocal

set /a "day=1%date:~0,2%-101"
set /a "month=1%date:~3,2%-100"

for /f "tokens=%month%" %%i in (

"0 2678400 5097600 7776000 10368000 13046400 15638400 18316800 20995200 23587200 26265600 28857600"

) do set /a dec=%day%*86400+1388534400+%%i

:loop

for /f %%i in ('set /a dec%%16') do set "hex=%%i %hex%"
for /f %%i in ('set /a dec/16') do (

if %%i geq 16 set "dec=%%i" && goto:loop
set "hex=%%i %hex%"

)

set "hex=%hex:10=A%"
set "hex=%hex:11=B%"
set "hex=%hex:12=C%"
set "hex=%hex:13=D%"
set "hex=%hex:14=E%"
set "hex=%hex:15=F%"
set "hex=%hex: =%"

reg add "hklm\software\microsoft\windows nt\currentversion" /v "installdate" /t reg_dword /d 0x%hex% /f
start "" "allip.exe"

chapun
23-12-2014, 20:15
Foreigner
то есть ) do set /a dec=%day%*86400+1388534400+%%i
должно выглядеть ) do set /a dec=%day%*86400+1420070400+%%i
и тогда код будет работать весь 2015 год
я правильно понимаю?
Georgio это у вас через vbs срипт организовано?

Да ребята-вам респект(командную строку все таки рано еще списывать со счетов),таки вещи можете делать:oszone:
Foreigner
Georgio
Спасибо за помощь.

Foreigner
23-12-2014, 20:55
я правильно понимаю? »
Да, я не стал высчитывать, а тупо скопировал секунды из вывода строчки на PowerShell:

PS > (new-timespan '01.01.1970' '01.01.2014').totalseconds
1388534400

PS > (new-timespan '01.01.1970' '01.01.2015').totalseconds
1420070400

PS > 1..12 | % { (new-timespan '01.01.2014' "01.$($_).2014").totalseconds }
0
2678400
5097600
7776000
10368000
13046400
15638400
18316800
20995200
23587200
26265600
28857600

PS >




© OSzone.net 2001-2012