Показать полную графическую версию : [решено] нужно что-бы батник считал сколько раз его запускали
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
Мда, ты даже не представляеш как меня выручил, короче, респект.
Пишу так, в ответ молчание...
@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
Чет я не пойму, че делают твои строки начиная с сетап.ехе. И что должен делать весь батник?
Как сделать что бы после 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
Путь до каталога напиши, какие файлы надо удалить, все?
например с/111/temp в папке temp всё надо удалить
Разобрался, новый вопрос???
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, мне он ненужен, как это отключить????
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.