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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Подскажи пожалуйста еще как вывести время в формате часы:минуты:секунды
    echo.%time:~0,-3%

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:42 04-06-2010
    Den13V



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

    Цитата:
    1. строка нужна, если батник запустишь до 10 часов утра с неудачными настройками системы.

     
     
    перевел время на 9:36, попробовал без
    Цитата:
    set "timenew=%teminew: =0%"
    прекрасно отработал.

    Всего записей: 15 | Зарегистр. 08-07-2009 | Отправлено: 12:43 04-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Поэтому обратил внимание на параметры: отыскивается окно в т.ч. и по заголовку.
    Т.е. имеется строка в tasklist с инфой об окне, PID и т.д. Словили окно, сохранили PID- работаем спокойно.
    ЗЫ: Окно- имеется ввиду заголовок (title).

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:43 04-06-2010
    Den13V



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

    Цитата:
    %time:~0,-3%

     
    спасибо, сработало.

    Всего записей: 15 | Зарегистр. 08-07-2009 | Отправлено: 12:45 04-06-2010
    wolf0425



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

    Цитата:
    а что будет если запущу до 10 утра без этой строки?  

    а там "%time%" в может быть " 9:59:59,25" - т.е. с пробелом, если в системных настройках так установлено (причем это по умолчанию в части систем).
    "%timenew%" соответственно будет " 9.59"
    а с этой строкой - "09.59"
    бужешь добавлять %timenew% в середину/конец имени файла - почувствуешь разницу.
     

    Цитата:
    пробел остается и так и эток.

    гонишь. значит пробел ты добавил в какую-то предыдущую строку, устанавливающую timenew

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:47 04-06-2010 | Исправлено: wolf0425, 12:53 04-06-2010
    Unitaz



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    граждане а как из батничка MBR занулить вместе с первыми 64 секторами ?

    Всего записей: 2290 | Зарегистр. 28-06-2002 | Отправлено: 12:51 04-06-2010
    wolf0425



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

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

    Цитата:
    Т.е. имеется строка в tasklist с инфой об окне, PID и т.д. Словили окно, сохранили PID- работаем спокойно.
    соответственно словили два PID - свой и соседсткий.
    когда таймер закончится - вместо убития себя убьем соседа и выйдем, а своя пауза останется...
     
     
    а тут все гарантированно:  
    1. проверка наличия нужного процесса (паузы) делается по строке его запуска, т.е в худшем случае мы не видим что "нашу" паузу уже сняли и видим висящую паузу в соседнем батнике со случайно совпавшим %random%
    2. когда батнику надоедает ждать он устанавливает своему окну имя killme и убивает по этому имени окна  себя с дочерним (зависший на паузе) батником идущий в этом же окне. Если вдруг будет параллельный батник с таким именем окна - то тоже на стадии самоубийства, и пофиг чей килл кого убьет. смысла возни с запоминанием pid - напрочь не видно.
     
    можешь написать лучше - напиши, оценим. а критиковать все горазды
     
    ps: чего-то tasklist /m /fi "windowtitle eq 123" показывает мне только один PID,  
    процесса породженного start /b "123" cmd.exe /q /k "pause & exit"  - вообще не видно.
     
    pps: советы как работающий батник может точно определить СВОЙ PID при наличии параллельно запущенных своих копий - принимаются. пока ничего умнее установки уникального имени окна не придумалось.  
    Как получить pid своих дочерних процессов - что-то вообще идей нет...
    как прибить только порожденные процессы, не прибивая головной - идей тем более нет.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:05 04-06-2010 | Исправлено: wolf0425, 14:40 04-06-2010
    mugil_cephalus

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

    Цитата:
    опущенно специально: если какое ещё окно сдуру установило title killme - тo наверно оно тоже хочет чтоб его закрыли  

    прям не система , а клуб самоубийц  

    Цитата:
    не знаю где используется только 8, но cmd.exe от xp sp3 eng - различие в 10м знаке вполне замечает, :timerloop и :timerloop2 - считает разными метками  
     

    дежавю: походу , "трудности перевода"

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:47 04-06-2010
    wolf0425



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

    Цитата:
    прям не система , а клуб самоубийц  

     ну если ты знаешь другой способ батнику убить конкретно свое окно - пиши, чего ржать то
     

    Цитата:
    дежавю: походу , "трудности перевода"  
     cmd.exe от xp sp3 rus - тоже замечает

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:56 04-06-2010 | Исправлено: wolf0425, 15:11 04-06-2010
    igor_andreev

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

    Цитата:
    как из батничка MBR занулить

    http://www.terabyteunlimited.com/downloads/mbr.zip

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 15:19 04-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    насколько большой max_id  у команды at и он вообще есть?
    если постоянно добавлять/убавлять задачи  - id точно не переполнится?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:32 04-06-2010 | Исправлено: wolf0425, 15:45 04-06-2010
    duh_S

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите плз, как в файле поменять старый ip на новый (через sed -i но незнаю как):
     
    начинаем батник

    Код:
     
    for /f "tokens=2" %%A in ('netsh interface ipv4 show config "Беспроводное сетевое соединение"^|find /I "IP-адрес"') do set CURRIP=%%A
     

    далее как-то так

    Код:
     
    set ThisCmdDir=%~dp0
    Set path_config_ini="%ThisCmdDir%config.ini"
    setlocal enabledelayedexpansion
    Set "Key=host"
    For /F "usebackq delims==" %%i in (`Find /I "%Key%" ^< %path_config_ini%`) Do Set замена текста
     

    в файле config.ini

    Код:
     
    [connection]
    host=111.111.111.111
    port=12345
    password=
     


    Всего записей: 66 | Зарегистр. 28-08-2007 | Отправлено: 16:30 04-06-2010 | Исправлено: duh_S, 16:33 04-06-2010
    mugil_cephalus

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

    Цитата:
    ну если ты знаешь другой способ батнику убить конкретно свое окно - пиши, чего ржать то


    Код:
    exit
     
     

    Цитата:
    cmd.exe от xp sp3 rus - тоже замечает  

    а вот help от xp sp3 rus - нет...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 16:59 04-06-2010 | Исправлено: mugil_cephalus, 16:59 04-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    duh_S sed -i -r "s/^host=.*$/host=%currip%/gi" %path_config_ini%
     
     
     
    Добавлено:
    mugil_cephalus

    Цитата:

    Цитата:
    ну если ты знаешь другой способ батнику убить конкретно свое окно - пиши, чего ржать то

    Код:
    exit
     
    так этот код завершает только один батник - в котором выполняется.
    А окно нифига само не закроется пока не завершатся ВСЕ запущенные в нем батники - их может быть более одного, как в вышеприведенном коде.
    так что надо или убивать себя со всеми порожденными по ходу и всё ещё незавершенными процессами или убивать все процессы в своем окне.
    и пока прибить и то и то тупо по имени окна - самое простое и надежное решение.
     
     
    Добавлено:

    Цитата:
    а вот help от xp sp3 rus - нет...  
    а, в английском хэлпе тоже написано про 8.
    но реально почему-то уже больше.
    проверил - при длине 127 символов goto метки ещё не путает, при бОльшей - goto роняет cmd

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:44 04-06-2010 | Исправлено: wolf0425, 18:14 04-06-2010
    mugil_cephalus

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

    Цитата:
    так этот код завершает только один батник - в котором выполняется.  

    да я шучу...  
    перечитай свой фразеологизм -  

    Цитата:
    опущенно специально: если какое ещё окно сдуру установило title killme - тo наверно оно тоже хочет чтоб его закрыли  

    вот он меня и раззадорил, как представлю систему с кучей окон с тайтлами killme и скрипт, как в "матрице" , который их отлавливает и терминирует - какойто сюрреалистический кошмар сисадмина
    тогда
    Код:
    shutdown -r


    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 18:04 04-06-2010 | Исправлено: mugil_cephalus, 18:05 04-06-2010
    wolf0425



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

    Цитата:
    перечитай свой фразеологизм -  
    да в твоей цитате отсутствует главное - смайлик на конце
     

    Цитата:
    вот он меня и раззадорил, как представлю систему с кучей окон с тайтлами killme и скрипт, как в "матрице" , который их отлавливает и терминирует - какойто сюрреалистический кошмар сисадмина  
    ну если обломались или ещё почему-то не сработали штатные механизмы киляния окон - то путь скрипт киляет по тайтлам, да Не мне же этим заниматься

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:18 04-06-2010 | Исправлено: wolf0425, 18:27 04-06-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересно, а есть тулзы командной строки, которые позволяют менять свойства/метаинформацию документа Word (автор, организация и т.д.)

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 18:19 04-06-2010
    mugil_cephalus

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

    Цитата:
    проверил - при длине 127 символов goto метки ещё не путает, при бОльшей - goto роняет cmd  

    ооооооо....... без комментариев

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 18:21 04-06-2010
    wolf0425



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

    Цитата:
    Интересно, а есть тулзы командной строки, которые позволяют менять свойства/метаинформацию документа Word (автор, организация и т.д.)
    врядли - формат закрытый, так что напрямую в бинарник лезть никому не надо.
    А вот на vbs написать командлайную тулзу, которая будет инсталлированный ворд напрягать поменять что-то в метаинформации файла - наверно можно, спроси в их форуме.  

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:25 04-06-2010 | Исправлено: wolf0425, 18:26 04-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Есть тулза от M$ сносящая в /dev/null всю служебную (мета?) инфу из доков.

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 18:26 04-06-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