Показать полную графическую версию : [решено] Запуск .bat определенное количество раз и определенное количество дней
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество раз. Как это реализовать?
2 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество дней. Как это реализовать?
будет работать в определеный день
@if "%date%" neq "23.04.2015" exit/b 1
будет работать каждое 10-е число месяца
@if "%date:~,2%" neq "10" exit/b 1
а мне надо
1 вариант запуск происходил определенное количество раз
2 вариант определенное количество дней
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запуск происходил определенное количество раз. Как это реализовать? »
for /l %%i in (1, 1, определенное количество раз) do call некий скрипт
что бы запуск происходил определенное количество дней. »
Переведите, пожалуйста, предложение на русский язык так, чтобы оно обрело смысл.
стобы можно было запустить например только 3 раза BAT
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество раз. Как это реализовать?
2 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество дней. Как это реализовать?
55kadi, даже если сто раз сказать «Мёд, мёд» — во рту сладко не станет. От того, что Вы тупо повторяете первое сообщение, смысла не прибавится.
На первый вопрос ответ был дан выше.
for /l %%i in (1, 1, ) do call del /F /S /Q /A C:\Users\dk\Desktop\VEHI\*.*
сделал так но не работает
megaloman
23-10-2016, 17:43
На уровне примитивного вируса: в текст батника после GoTo :Eof пишется служебная инфа для работы счетчика.
@Echo Off
cls
Set /A NTime=5
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%~dpnx0"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%"`) DO (
If "%%i"=="@@@" Set /A iTime+=1
)
If %iTime% GEQ %NTime% GoTo :Eof
echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% times
Pause
GoTo :Eof@Echo Off
cls
Set /A NDays=3
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%~dpnx0"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%"`) DO (
If "%%i"=="@@@" Set /A iTime+=1
Set "iDate=%%j"
)
If %iTime% GEQ %NDays% GoTo :Eof
If Not "%Date%"=="%iDate%" echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% days, last day was %iDate%
Pause
GoTo :Eof
Вместо (или после) Echo перед Pause можете написать свой код
megaloman,
все работает спасибо
но после переделки BAT в EXE счетчик не работает
есть вариант заставить его работать ?
for /l %%i in (1, 1, ) do call del /F /S /Q /A C:\Users\dk\Desktop\VEHI\*.*
сделал так но не работает »
Естественно. Вы ведь указали выполнение цикла ровно 0 раз.
megaloman
23-10-2016, 18:18
но после переделки BAT в EXE счетчик не работает Вариант - где-то делать служебный файл для работы счетчика, но именно этого я хотел избежать.
a где изменить количество циклов ?
делать служебный файл для работы счетчика
как это сделать ?
a где изменить количество циклов ? »
Там, где в примере написано определенное количество раз. Можно также открыть командную строку, написать:
for /?
нажать Enter и прочитать.
Там, где в примере написано определенное количество раз. Можно также открыть командную строку, написать: »
все перетситал но не понял можете помочь надо 3 раза
megaloman
23-10-2016, 20:20
55kadi, Пишется служебная инфа для работы счетчика во вспомогательный log-файл в папку %Tmp%.
@Echo Off
Rem Кол-во возможных запусков батника
Set /A NTime=5
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%Tmp%\%~nx0.log"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%" 2^>nul`) DO (
If "%%i"=="@@@" Set /A iTime+=1
)
If %iTime% GEQ %NTime% GoTo :Eof
echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% times & Pause
GoTo :Eof
@Echo Off
Rem Кол-во возможных для запуска дней
Set /A NDays=3
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%Tmp%\%~nx0.log"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%" 2^>nul`) DO (
If "%%i"=="@@@" Set /A iTime+=1
Set "iDate=%%j"
)
If %iTime% GEQ %NDays% GoTo :Eof
If Not "%Date%"=="%iDate%" echo @@@ %Date% %Time% >>"%iBat%"
Echo before the script was run %iTime% days, last day was %iDate% & Pause
GoTo :EofВместо (или после) Echo перед Pause можете написать свой код
От меня ускользает смысл этого действа. А зачем это всё нужно, не проще ли использовать планировщик? Тем более мне не понятен смысл исполнения Del в цикле
FOR /L %%i IN (1,1,125) DO Del ....
125 раз вподряд.
От меня ускользает смысл этого действа. А зачем это всё нужно, не проще ли использовать планировщик? Тем более мне не понятен смысл исполнения Del в цикле
FOR /L %%i IN (1,1,125) DO Del ....
125 раз вподряд. »
Не только от Вас, коллега ;).
Вместо (или после) Echo перед Pause можете написать свой код »
пишу свой код но он не работает
куда точно писать
заранее спасибо
@Echo Off
Rem Кол-во возможных запусков батника
Set /A NTime=2
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%Tmp%\%~nx0.log"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%" 2^>nul`) DO (
If "%%i"=="@@@" Set /A iTime+=1
)
If %iTime% GEQ %NTime% GoTo :Eof
echo @@@ %Date% %Time% >>"%iBat%"
del /F /S /Q /A C:\Users\dk\Desktop\VEHI\*.* & Pause
GoTo :Eof
сделал так но не работает
megaloman
23-10-2016, 22:26
55kadi, @Echo Off
Set /A NTime=5
SetLocal EnableExtensions EnableDelayedExpansion
Set /A iTime=0
Set "iBat=%Tmp%\%~nx0.log"
FOR /F "usebackq tokens=1,2,3 delims= " %%i IN (`type "%iBat%" 2^>nul`) DO (
If "%%i"=="@@@" Set /A iTime+=1
)
Echo NTime=%NTime% iTime=%iTime% log-file=%iBat% & Pause
If %iTime% GEQ %NTime% GoTo :Eof
echo @@@ %Date% %Time% >>"%iBat%"
echo del /F /S /Q /A C:\Users\dk\Desktop\VEHI\*.*
GoTo :Eof
Запустите отладочный вариант, результат (что выдаёт батник), продемонстрируйте здесь. »
megaloman
23-10-2016, 23:51
55kadi, вы запустили батник более 5 разрешенных раз.
ВЫ задали макс значение NTime=5, cчетчик запусков iTime=5 тоже, то есть Вы запускал батник 5 раз или более. Посмотрите лог-файл, который создал батник, и, если хотите восстановить разрешение на работу батника, удалите его. Или увеличьте значение NTime.
То есть батник отработал как надо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.