![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] запустить счетчик по условию (команде) |
|
CMD/BAT - [решено] запустить счетчик по условию (команде)
|
Ветеран Сообщения: 1274 |
Допустим такой вариант:
@echo off set [= for %%a in (a b c d e f d h i) do call :# "%%a" pause :# set/a m+=1 if "%~1"=="d" if not defined [ set [=]& echo Запуск set/a n+=1 echo %n% %m% exit /b Требуется примерно: счет по команде ...................: a b c d e f d h i set/a m+=1: 1 2 3 4 5 6 7 8 9 set/a n+=1 : 0 0 0 1 2 3 4 5 6 или прерывание по команде ...................: a b c d e f d h i set/a m+=1: 1 2 3 4 5 6 7 8 9 set/a n+=1 : 1 2 3 0 1 2 3 4 5 идет счет (допустим имен файлов) на увеличение 1 2 3 4 5 6 7 8 9 на каком-то этапе счета наступает условие (нашли нужное имя (а может после него и еще такое же быть)) и по его однократному выполнению, не прекращая основного счета, начинается новый счет основной 1 2 3 4 5 6 ....новый 0 0 1 2 3 4 до начала нового счета необязательно нули, может быть ничего или единицы, но не более не обязательно два счетчика, если это сделает один, как-то хитро узнавая сколько надо отнимать и выдавать разницу (вывод отдельной переменной) 1 2 3 4 5 6 7 8 9 (отнимаем 5 с нужного места, а именно после 5ти - произошло условие в это время) 0 0 0 0 0 1 2 3 4 но как это сделать? |
|
Отправлено: 22:06, 22-02-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я что-то не пойму, в чём проблема. Вроде ж всё должно работать, не?
@echo off setlocal enableextensions enabledelayedexpansion set /a iCountTotal = 0 set /a iCountAdd = 0 set /a iCountReset = 0 for %%i in (a b c d e f d h i) do call :Sub "%%~i" endlocal exit /b 0 :Sub set /a iCountTotal += 1 if /i "%~1" equ "d" ( set /a iCountAdd += 1 set /a iCountReset = 0 ) else ( set /a iCountReset += 1 ) echo [%~1] [%iCountTotal%] [%iCountAdd%] [%iCountReset%] exit /b |
Отправлено: 22:59, 22-02-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Iska,
надо вот так [a] [1] [0] [1] [b] [2] [0] [2] [c] [3] [0] [3] [d] [4] [1] [0] [e] [5] [2] [1] [f] [6] [3] [2] [d] [7] [4] [3] [h] [8] [5] [4] [i] [9] [6] [5] @echo off setlocal enableextensions enabledelayedexpansion set /a iCountTotal = 0 set /a iCountAdd = 0 set /a iCountReset = 0 set s= for %%i in (a b c d e f d h i) do call :Sub "%%~i" endlocal pause& exit :Sub set /a iCountTotal += 1 if /i "%~1" equ "d" if not defined s ( set s=true set /a iCountAdd += 1 set /a iCountReset = 0 ) else ( set /a iCountReset += 1 ) echo [%~1] [%iCountTotal%] [%iCountAdd%] [%iCountReset%]>>"file.txt" exit /b [a] [1] [0] [0] [b] [2] [0] [0] [c] [3] [0] [0] [d] [4] [1] [0] [e] [5] [1] [0] [f] [6] [1] [0] [d] [7] [1] [1] [h] [8] [1] [1] [i] [9] [1] [1] |
Последний раз редактировалось alpap, 23-02-2017 в 01:25. Отправлено: 01:17, 23-02-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set /a iCountTotal = 0 rem set /a iCountAdd = 0 set /a iCountReset = 0 for %%i in (a b c d e f d h i) do call :Sub "%%~i" endlocal exit /b 0 :Sub set /a iCountTotal += 1 if /i "%~1" equ "d" ( set /a iCountReset = 0 if not defined iCountAdd set /a iCountAdd = 0 ) else ( set /a iCountReset += 1 ) if defined iCountAdd set /a iCountAdd += 1 echo [%~1] [%iCountTotal%] [%iCountAdd%] [%iCountReset%] exit /b — если Вас устроит пустота в выводе. Если нет — потребуется ещё одна булева переменная, отвечающая за начало отсчёта, например, так: Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set /a iCountTotal = 0 set /a iCountAdd = 0 set /a iCountReset = 0 set /a boolStartCount = 0 for %%i in (a b c d e f d h i) do call :Sub "%%~i" endlocal exit /b 0 :Sub set /a iCountTotal += 1 if /i "%~1" equ "d" ( set /a iCountReset = 0 set /a boolStartCount = 1 ) else ( set /a iCountReset += 1 ) if %boolStartCount% equ 1 set /a iCountAdd += 1 echo [%~1] [%iCountTotal%] [%iCountAdd%] [%iCountReset%] exit /b Но мне непонятен Ваш третий столбец. Почему у Вас здесь: в примере, как должно быть, при втором появлении d, не происходит оговоренного сброса третьего счётчика?! |
|
Отправлено: 02:50, 23-02-2017 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Iska,
Вот Спасибо! Первый код под спойлером именно то что нужно, а то я уже начал думать что это нереально. мне этого достаточно для дальнейших своих действий: |
|
Отправлено: 03:56, 23-02-2017 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - [решено] Удаление программ по сети, не отображающиеся по команде WMIC | DJ Mogarych | Программное обеспечение Windows | 10 | 04-02-2015 00:48 | |
CMD/BAT - [решено] Запуск приложения по условию | DR_WELL | Скриптовые языки администрирования Windows | 2 | 29-11-2012 21:20 | |
Доступ - Расшаривание папок по условию | aleksey_m | Microsoft Windows 2000/XP | 8 | 06-03-2009 09:07 | |
[решено] Help помогите с заданием по *nix по команде map cp ??? | Ufo_log | Программирование в *nix | 2 | 17-12-2007 19:55 | |
Скрипт по условию. | Butunin Klim | Программное обеспечение Windows | 7 | 18-08-2006 09:37 |
|