Войти

Показать полную графическую версию : [решено] нужно что-бы батник считал сколько раз его запускали


max_max_08
05-06-2009, 20:49
У меня тоже вопрос, нужно что-бы батник считал сколько раз его запускали и при достижении определенного значения перешел по определенной метке.

Maza Faka
06-06-2009, 11:52
max_max_08
Придётся записывать счётчик в файл или в реестр, по другому никак:

@Echo Off

Set Count=0

If Exist "%WINDIR%\~tmp_count.txt" (
For /F %%A In ('Type "%WINDIR%\~tmp_count.txt"') Do Set /A Count=%%A+1
)

If "%Count%"=="10" (
Echo Count limit
GoTo :EOF
)

Echo ^%Count%>"%WINDIR%\~tmp_count.txt"

::Здесь ваш код

В приведённом примере код будет выполняться 10 раз.

max_max_08
07-06-2009, 12:45
А как сделать счет по дням после первого запуска, и если можно вариант с записью в реестр.

Maza Faka
07-06-2009, 16:08
max_max_08
сделать счет по дням после первого запуска »
Можно "извратиться" так:

@Echo Off

Set DayLimit=10

Echo On Error Resume Next>~tmp.vbs
Echo Set WshShell = WScript.CreateObject("WScript.Shell")>>~tmp.vbs
Echo nDate = WshShell.RegRead("HKLM\Software\MyProgram\")>>~tmp.vbs
Echo If nDate = "" Then>>~tmp.vbs
Echo nDate = Now>>~tmp.vbs
Echo WshShell.RegWrite "HKLM\Software\MyProgram\", nDate>>~tmp.vbs
Echo End If>>~tmp.vbs
Echo If DateDiff("d", nDate, Now) ^> %DayLimit% Then WScript.Echo "Limit">>~tmp.vbs

For /F %%A In ('CScript ~tmp.vbs //Nologo') Do If /I "%%A"=="Limit" GoTo :EOF

Del /F /Q ~tmp.vbs>Nul

:)

max_max_08
07-06-2009, 18:10
Ого, спасибо, еще один вопрос, после установки моей программы в реестре появляется ветка с информацией о том куда она была установлена, нужно чтобы батник скопировал в эту папку файл install.exe и запустил его.

Maza Faka
08-06-2009, 09:55
max_max_08

нужно чтобы батник скопировал в эту папку файл install.exe и запустил его.[/q]


@Echo Off

Set RegKey=HKLM\Software\MyProgram

For /F "Tokens=3,*" %%A In ('Reg Query %RegKey% /V Path ^| Find /I "Path"') Do Set ProgramDir=%%A %%B

If Exist "%ProgramDir%" Copy /Y install.exe "%ProgramDir%"
Start "" "%ProgramDir%\install.exe"

max_max_08
08-06-2009, 12:45
Мда, ты даже не представляеш как меня выручил, короче, респект.

ofcoss
17-07-2009, 13:07
Пишу так, в ответ молчание...

@Echo Off

Set DayLimit=10

Echo On Error Resume Next>~tmp.vbs
Echo Set WshShell = WScript.CreateObject("WScript.Shell")>>~tmp.vbs
Echo nDate = WshShell.RegRead("HKLM\Software\MyProgram\")>>~tmp.vbs
Echo If nDate = "" Then>>~tmp.vbs
Echo nDate = Now>>~tmp.vbs
Echo WshShell.RegWrite "HKLM\Software\MyProgram\", nDate>>~tmp.vbs
Echo End If>>~tmp.vbs
Echo If DateDiff("d", nDate, Now) ^> %DayLimit% Then WScript.Echo "Limit">>~tmp.vbs

For /F %%A In ('CScript ~tmp.vbs //Nologo') Do If /I "%%A"=="Limit" GoTo :EOF

Del /F /Q ~tmp.vbs>Nul
setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-


И еще, надо что бы батник записывал не в реестр , а в тхт файл, который находиться в запароленном архиве на съемной флехи, у кого есть скрипт поделитесь плиз

max_max_08
17-07-2009, 18:23
Чет я не пойму, че делают твои строки начиная с сетап.ехе. И что должен делать весь батник?

ofcoss
17-07-2009, 23:26
Как сделать что бы после 10 дней при запуске он удалял файлы из каталога
@Echo Off

Set DayLimit=10

Echo On Error Resume Next>~tmp.vbs
Echo Set WshShell = WScript.CreateObject("WScript.Shell")>>~tmp.vbs
Echo nDate = WshShell.RegRead("HKLM\Software\MyProgram\")>>~tmp.vbs
Echo If nDate = "" Then>>~tmp.vbs
Echo nDate = Now>>~tmp.vbs
Echo WshShell.RegWrite "HKLM\Software\MyProgram\", nDate>>~tmp.vbs
Echo End If>>~tmp.vbs
Echo If DateDiff("d", nDate, Now) ^> %DayLimit% Then WScript.Echo "Limit">>~tmp.vbs

For /F %%A In ('CScript ~tmp.vbs //Nologo') Do If /I "%%A"=="Limit" GoTo :EOF

Del /F /Q ~tmp.vbs>Nul

max_max_08
18-07-2009, 13:37
Путь до каталога напиши, какие файлы надо удалить, все?

ofcoss
18-07-2009, 19:23
например с/111/temp в папке temp всё надо удалить

ofcoss
19-07-2009, 22:26
Разобрался, новый вопрос???
Set DayLimit=10
Echo On Error Resume Next>~tmp.vbs
Echo Set WshShell = WScript.CreateObject("WScript.Shell")>>~tmp.vbs
Echo nDate = WshShell.RegRead("HKLM\Software\MyProgram\")>>~tmp.vbs
Echo If nDate = "" Then>>~tmp.vbs
Echo nDate = Now>>~tmp.vbs
Echo WshShell.RegWrite "HKLM\Software\MyProgram\", nDate>>~tmp.vbs
Echo End If>>~tmp.vbs
Echo If DateDiff("d", nDate, Now) ^> %DayLimit% Then WScript.Echo "Limit">>~tmp.vbs
For /F %%A In ('CScript ~tmp.vbs //Nologo') Do If /I "%%A"=="Limit" GoTo :EOF
Del /F /Q ~tmp.vbs>Nul »

После это операции он создает в папке файл ~tmp.vbs, мне он ненужен, как это отключить????

amel27
20-07-2009, 08:59
ofcoss, при лимите происходит выход из батника без удаления VBS-файла
Set DayLimit=10
Echo On Error Resume Next>~tmp.vbs
Echo Set WshShell = WScript.CreateObject("WScript.Shell")>>~tmp.vbs
Echo nDate = WshShell.RegRead("HKLM\Software\MyProgram\")>>~tmp.vbs
Echo If nDate = "" Then>>~tmp.vbs
Echo nDate = Now>>~tmp.vbs
Echo WshShell.RegWrite "HKLM\Software\MyProgram\", nDate>>~tmp.vbs
Echo End If>>~tmp.vbs
Echo If DateDiff("d", nDate, Now) ^> %DayLimit% Then WScript.Echo "Limit">>~tmp.vbs
For /F %%A In ('CScript ~tmp.vbs //Nologo') Do If /I "%%A"=="Limit" GoTo :END

:: ТУТ САМ
:: ТЕКСТ
:: БАТНИКА

:END
Del /F/Q ~tmp.vbs>Nul

Starter1
24-07-2010, 20:00
У меня тоже вопрос, нужно что-бы батник считал сколько раз его запускали и при достижении определенного значения перешел по определенной метке. »

Пускай создаёт файл и в нём записывает номер.




© OSzone.net 2001-2012