Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 8
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Хочется, чтобы пользователь видел, что программа работает и не закрывал раньше времени окно.
    так напиши ему что программа будет работать чтоб не трогал.
     
    просто длительно выполняющаяся операция и зависшая программа - для батника одно и то же.  
     
    Но если очень хочется показометр и если ты знаешь как параллельным процессом отловить признаки того, что программа исправно работает - запусти этот процесс индикации параллельно в той же консоли.  
    пускаешь рекурсивно параллельным процессом через start /b "" "%~f0" pokazometr, в батнике ветвление в начале, и показывай той веткой батника что-то шевелящееся промежуточное - хоть длину того лога в байтах прописывай в заголовок консоли, хоть просто время, если уверен что не зависнет. Ну и флаги на окончание процесса.
    только не забудь паузу в цикл индикации вставить, чтоб 100% проца не выжирать. пинг вполне сгодится.
     
    пример с таймером

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:25 23-04-2010 | Исправлено: wolf0425, 14:39 23-04-2010
    vov4ka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Joo1z пишет вот что:
    Операция успешно завершена
     
    Операция успешно завершена
    [SC] ControlService FAILED 1062:
     
     
    [SC] ChangeServiceConfig SUCCESS
     
    Error:  Не найден сетевой путь.
     
    Error:  Не найден сетевой путь.
    [SC] OpenSCManager FAILED 1722:
     
     
    [SC] OpenSCManager FAILED 1722:
     
    В списке компов:
    conserver
    isot
    А вообще Ваш скрипт гениален-я даже не знал,что такие штуки выделывать можно!!! Как самому такому можно научиться?

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 14:57 23-04-2010 | Исправлено: vov4ka, 15:03 23-04-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vov4ka
    Операция успешно завершена  
     
    Операция успешно завершена

    Это изменились записи в реестре
    [SC] ControlService FAILED 1062:
    Это говорит о том, что сервис уже остановлен.
     
    [SC] ChangeServiceConfig SUCCESS
    Это говорит о том, что параметры запуска сервиса успешно изменены.
     
    Так что все нормально.
     
    А если речь об обучении, то читай эту ветку - лучше в рунете не видел, очень полезно. Просто читай что народ хочет, а потом смотри как выглядит скрипт. Копируй, запускай у себя, модифицируй и снова запускай.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 15:26 23-04-2010
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425 Rush
    Большое спасибо
     
    Вариант от Rush полностью подошел, хотя пока его не увидел уже собрался доделать скрипт от Rush как аналог никсовой ps

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 15:56 23-04-2010
    vov4ka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Joo1z
    Да,действительно работает! Но только,если вместо NetBios имен IP-адреса компов указывать. А что в Вашем батнике значат ключи  /f %%a /t /d ?

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 16:18 23-04-2010
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Еще такой вопрос
     
    Допустим я хочу сделать "аналог" grep в виде grep.bat , в котором будет  
    findstr /i %*
    Сохранил такой батничек, набираю в консоли
    dir | grep "php"
    и вместо фильрации вывода dir получаю в консоли
    findstr /i "php"
     
    Как сделать чтобы findstr в этом случае обрабатывала вывод так как мне надо?

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 16:26 23-04-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vov4ka
    Напиши в командной строке "REG ADD /?" и "FOR /?" и почитай. К тому же все есть в шапке.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 16:54 23-04-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    0Vovan0
    Зачем тебе аналог grep в виде батника? Пользуй grep.exe если в findstr чего-то не хватает.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:33 23-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Как сделать чтобы findstr в этом случае обрабатывала вывод так как мне надо?

    сделать то тривиально - берешь
    Код:
    @echo off
    findstr /i /r /c:"%~1"
    сохраняешь где-то в пути как grep.cmd...
    другой вопрос что тебе это не надо, полезнее нормальный порт грепа туда положить
     
    http://ftp.ufanet.ru/pub/windows/unixutils/
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:15 24-04-2010 | Исправлено: wolf0425, 01:17 24-04-2010
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    Спасибо. Как оказалось я просто немного запутался, не сделав @echo off в батнике я получал на выходе ту команду которая в батнике исполняется.  
     
    Ну а так grep.exe рулит  А ps.exe не существует случаем?, искал и нигде не нашел. ps.exe интересует исключительно ради синтаксиса и поддержки тех же команд что и в юниксах, если такое найдется будет удобно - не нужно будет писать разные команды для винды и никсов. Ни в UnixUtils, ни в CoreUtils ps.exe я не нашел, какой то ps.exe нашелся в MSYS, но почему то оно даже стандартных виндовых процессов не выводит

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 02:08 24-04-2010 | Исправлено: 0Vovan0, 02:14 24-04-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, можно ли в батнике организовать нечто вроде прогресс-бара, например из символа "=" и указания прогресса в %?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 15:14 24-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft

    Код:
    @echo off
    setlocal enabledelayedexpansion
    for %%a in (*.*) do set /a kolvo+=1
    set file=1
    set e=1
    set "bar=#__________________________________"
    For %%F In (*.*) Do (
        Set /a N+=1
        set vsego=!N!
        set Percent=!N!
        set /a Percent*=100
        set /a Percent/=%kolvo%
        set /a vsego*=35
        set /a vsego/=%kolvo%
        call :tyu
        if defined e Title !Percent!^%% [!bar!] > nul
        xcopy "%%F" A:\ > nul
        set e=
    )
    GoTo :EOF
    :tyu
    :ert
    if !vsego! GTR !file! (
        set "bar=#!bar!"
        set /a file+=1
        set "bar=!bar:~0,-1!"
        set e=1
        goto :ert
    )

    копируются файлы в A:\

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:20 24-04-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Это как я понял для отображения в заголовке? а в самой консоли можно?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 15:31 24-04-2010
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft

    Цитата:
    организовать нечто вроде прогресс-бара, например из символа "=" и указания прогресса в %?


    Код:
    echo off
    set /a Percent=0
    set "Progres="
    :_0
    if %Percent% LEQ 100 (
     set Progres=%Progres%=
     set /a Percent+=1
     cls
     echo Progres
     echo %Progres%  Percent=%Percent%
     ping -n 1 localhost > nul  
     goto _0
    )  


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:09 24-04-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Спасибо! Подскажите еще, как применить cls только к онкретной строке прогрессбара, т.е. чтобы все, что скрипт отработал до этого не исчезало?
    заранее благодарен

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 17:06 24-04-2010 | Исправлено: Free_Soft, 18:05 24-04-2010
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft

    Цитата:
    как применить cls только к онкретной строке прогрессбара, т.е. чтобы все, что скрипт отработал до этого не исчезало?  

    Стандартными средствами Windows, боюсь никак. В шапке есть утилиты, позволяющие это сделать.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:06 24-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    утилиты для организации интерфейса ком строки

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:11 24-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Это те утилиты при попытке доступа к которым выдает:
    Цитата:
    Запрашиваемый раздел не существует.
    ?
    Были такие

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 21:49 24-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужно убить процесс если он ушел в >80% загрузку CPU

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 22:28 24-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yurkesha

    Цитата:
    Это те утилиты при попытке доступа к которым выдает:
    Цитата:Запрашиваемый раздел не существует.  

    Поправил шапку

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:48 25-04-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru