Войти

Показать полную графическую версию : [решено] Запуск .bat определенное количество раз и определенное количество дней


Страниц : [1] 2

55kadi
23-10-2016, 14:51
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество раз. Как это реализовать?

2 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество дней. Как это реализовать?

55kadi
23-10-2016, 14:55
будет работать в определеный день


@if "%date%" neq "23.04.2015" exit/b 1

будет работать каждое 10-е число месяца


@if "%date:~,2%" neq "10" exit/b 1

а мне надо


1 вариант запуск происходил определенное количество раз
2 вариант определенное количество дней

Iska
23-10-2016, 15:37
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запуск происходил определенное количество раз. Как это реализовать? »
for /l %%i in (1, 1, определенное количество раз) do call некий скрипт

что бы запуск происходил определенное количество дней. »
Переведите, пожалуйста, предложение на русский язык так, чтобы оно обрело смысл.

55kadi
23-10-2016, 15:47
стобы можно было запустить например только 3 раза BAT

1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество раз. Как это реализовать?

2 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запустить можно было определенное количество дней. Как это реализовать?

Iska
23-10-2016, 16:32
55kadi, даже если сто раз сказать «Мёд, мёд» — во рту сладко не станет. От того, что Вы тупо повторяете первое сообщение, смысла не прибавится.

На первый вопрос ответ был дан выше.

55kadi
23-10-2016, 17:27
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 можете написать свой код

55kadi
23-10-2016, 18:11
megaloman,

все работает спасибо

но после переделки BAT в EXE счетчик не работает

есть вариант заставить его работать ?

Iska
23-10-2016, 18:14
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 счетчик не работает Вариант - где-то делать служебный файл для работы счетчика, но именно этого я хотел избежать.

55kadi
23-10-2016, 18:19
a где изменить количество циклов ?

делать служебный файл для работы счетчика

как это сделать ?

Iska
23-10-2016, 18:44
a где изменить количество циклов ? »
Там, где в примере написано определенное количество раз. Можно также открыть командную строку, написать:
for /?
нажать Enter и прочитать.

55kadi
23-10-2016, 19:43
Там, где в примере написано определенное количество раз. Можно также открыть командную строку, написать: »

все перетситал но не понял можете помочь надо 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 раз вподряд.

Iska
23-10-2016, 20:50
От меня ускользает смысл этого действа. А зачем это всё нужно, не проще ли использовать планировщик? Тем более мне не понятен смысл исполнения Del в цикле
FOR /L %%i IN (1,1,125) DO Del ....
125 раз вподряд. »
Не только от Вас, коллега ;).

55kadi
23-10-2016, 20:51
Вместо (или после) Echo перед Pause можете написать свой код »

пишу свой код но он не работает

куда точно писать

заранее спасибо

55kadi
23-10-2016, 21:14
@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

55kadi
23-10-2016, 22:47
Запустите отладочный вариант, результат (что выдаёт батник), продемонстрируйте здесь. »

megaloman
23-10-2016, 23:51
55kadi, вы запустили батник более 5 разрешенных раз.
ВЫ задали макс значение NTime=5, cчетчик запусков iTime=5 тоже, то есть Вы запускал батник 5 раз или более. Посмотрите лог-файл, который создал батник, и, если хотите восстановить разрешение на работу батника, удалите его. Или увеличьте значение NTime.
То есть батник отработал как надо.




© OSzone.net 2001-2012