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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Altus

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

    Цитата:
    Что ты хочешь дальше с этой датой делать?

    Переименовывать логи, которые за собой оставляет некая софтинка. Логи она кладёт всегда в одно место и всегда с одним именем. И никаких настроек логов в ней нет. Кто писал неизвестно, исходников нет. Планета шелезяка короче говоря.
    Эти логи, иногда и полугодовалой давности, надо просматривать.
    Сейчас они именуются по порядку от нуля. Хочется находить логи по дате, а не тыкать наугад.
    Можно конечно на фридос какойнито поменять, и там это всё решить, но с совместимостью экспериментировать надо.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 13:21 29-06-2010
    res2001



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

    Цитата:
    Хотя батник-отладчик тоже попробую для себя накатать.

    Как ты в батнике-отладчике собираешься, например, циклы отлаживать, или как ты собираешься извлекать из отлаживаемого батника имена переменных?
    Видимо надо будет отлаживаемый батник преобразовывать в другой, в который добавлять команды для отладки, типа печати значений локальных переменных, печати текущей выполняемой строки, и паузу, для реализации пошаговой трассировки . И уже его выполнять.
    Реально, но какой смысл. У тебя будет куча информации выдаваться, которую потом придется анализировать. Проще в отлаживаемый батник руками вставить в нужное место команды отладки, как предлагает mugil_cephalus.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:28 29-06-2010
    mugil_cephalus

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

    Цитата:
    или как ты собираешься извлекать из отлаживаемого батника имена переменных?  

    а если там будет setlocal - он их вообще не вытащит
    p.s.
    и %errorlevel% должна стоять сразу за нужной командой

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



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

    Цитата:
    Переименовывать логи, которые за собой оставляет некая софтинка. Логи она кладёт всегда в одно место и всегда с одним именем. И никаких настроек логов в ней нет. Кто писал неизвестно, исходников нет. Планета шелезяка короче говоря.  
    а нафига же всё это под ДОСом то переименовывать?
    ты эти логи все равно же по сети смотришь - вот и запусти переименовывание на какой-то XP/2k3/...
    в смысле - приложи туда .cmd который при нужде переименует все нумерованные логи в нормальные имена в соответствии с датой модификации файлов.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    а если батник-отладчик сам буде с багами , как понять где ошибка ; имхо, ты усложняешь себе жизнь...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:41 29-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Altus
    Как вариант - упаковывать этот лог в архив содержащий в названии дату.  
    arj это умеет.
    arj u -h# 20
    Потом можно распаковать архив в каталог с именем архива.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:44 29-06-2010 | Исправлено: res2001, 13:51 29-06-2010
    Engraf



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скажите, как задать символ " (двойные ковычки) в качестве разделителя строки в параметре delims= в цикле for /F ?  
    Варианты:
    for /F "delims=^" tokens=1-3" %%A in (file.txt) do ...
     и
    for /F "delims=/" tokens=1-3" %%A in (file.txt) do ...
     не сработали.  
    Говорит "Непредвиденное появление: tokens."

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 14:02 29-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Дефолтный профиль юзера весит 1мб...
    Ну а батнег удаляющий всё при загрузке (delall.bat):

    Код:
    @echo off
    cls
    cd %userprofile%
    del /f /q *.*

    Положить в C:\winnt\
    выполнить комманду от имени админа:
    reg add HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v delall /t REG_SZ /d "C:\winnt\delall.bat"
     
    ЗЫ: Ожидается что удалять он будет всё, что доступно (ожидается что недоступны будут системные файлы и папки [кусты реестра и т.д.])... но сразу на все не раскидывай- посмотри хотя бы на одной машине...

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 14:13 29-06-2010
    res2001



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

    Цитата:
    Скажите, как задать символ " (двойные ковычки) в качестве разделителя строки в параметре delims= в цикле for /F ?  

    Как это сделать не знаю, но вот так можно обойти:

    Код:
    @echo off
    setlocal enabledelayedexpansion
    for /F "tokens=*" %%a in (file.txt) do (
        set aa=%%a
        set aa=!aa:"=@!
        for /F "delims=@ tokens=1,2" %%b in ("!aa!") do echo %%b %%c
    )
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:02 29-06-2010 | Исправлено: res2001, 15:07 29-06-2010
    Altus

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Этот кусок копролита не подключен к сетке. Логи смотрят на нём же. Там и венды нет. Когда необходимо, подходит насяльника, быстро нажимает магическую комбинацию клавиш - и о чудо - рабочий процесс пошёл. Вокруг слышны непонятные голоса, то ли "аллах акбар", то ли "шайтан аднака". По окончании, тот же волшебник жмёт альтикс, программа завершается, батник переименовывает лог работы линии и задержек на ней, а голоса идут кушать свои национальные лепёшки до следующего аврала.
    res2001
    Спасибо. Про архиваторы то я и забыл. Потыкаюсь сегодня-завтра.

    Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 15:03 29-06-2010
    Engraf



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Пойдет, спасибо!

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 15:06 29-06-2010
    wolf0425



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

    Цитата:
    Спасибо. Про архиваторы то я и забыл. Потыкаюсь сегодня-завтра.
    мне все равно кажется, что создать или организовать создание мелкой утилитки,  
    которая печатает команду нужного формата,  
    перенаправить её вывод в файл и вызвать сгенеренный батник - будет сильно меньше возни, чем извращаться с подобным прикручиванием архиватора.
    но может я чего не понимаю в задаче...
    например не понимаю чем не нравятся просто имена по номеру - все равно же видны даты файлов в волковкоммандере. Или кому-то в ДОСе с голой космтроки нравится работать?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:13 29-06-2010 | Исправлено: wolf0425, 17:21 29-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вот у меня возникла задачка.
    Пользуюсь The Bat для получения почты.  
    Возникла необходимость обработать вложенные файлы от определенных получателей, после обработки отправить письмо отправителю о результате обработки.
    Сортировщик бата настроил, файл выгружаю, батник запускаю.  
    Все бы ничего, но как батнику узнать адрес отправителя и имя полученного файла?
    В сортировщике есть возможность отправить письмо на STDIN запускаемого приложения.
    Не соображу как в батнике обработать STDIN, хотя бы записать его в файл.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:18 29-06-2010
    jek1976



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    Спасибо, но так мы поудаляем все!
    А если в профиле есть юзеровские данные, которые еще не были синхронизированы? Они же тупо удалятся.
    Вот мне бы надо вопрос с синхронизацией данных разрешить... Какие есть идеи?

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 18:50 29-06-2010
    us0r



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

    Т.е. получается тебе надо сначала скинуть файлы на сервер а уже потом их килять?

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 18:58 29-06-2010 | Исправлено: us0r, 18:59 29-06-2010
    jek1976



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

    Цитата:
    Т.е. получается тебе надо сначала скинуть файлы на сервер а уже потом их килять

    Да нет, никаких серверов! Все должно происходить на локальной машине, причем даже если нет связи с сервером. По сути все должно быть ПРОЩЕ, и скрипт просто удаляет те профили, которые уже были синхронизированы. Я догадываюсь, что в папке с профилем должен быть некий признак, по которому можно определить, был он синхронизирован или нет...
     
    Добавлено:

    Цитата:
    Т.е. получается тебе надо сначала скинуть файлы на сервер а уже потом их килять

    Да нет, никаких серверов! Все должно происходить на локальной машине, причем даже если нет связи с сервером. По сути все должно быть ПРОЩЕ, и скрипт просто удаляет те профили, которые уже были синхронизированы. Я догадываюсь, что в папке с профилем должен быть некий признак, по которому можно определить, был он синхронизирован или нет...

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 19:05 29-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обрати внимение на mobsync.exe
     
    Добавлено:
    Так... Перечитал всё ещё раз...
    ТЗ такое:
    1) Проверяем сервак на доступность
    2) Проверяем папку на предмет R/W
    3) Узнаём какое файло на серваке не свежее
    4) Обновляем его
    5) Киляем профиль
    PROFIT!!!
    Правильно?

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 19:10 29-06-2010
    jek1976



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

    Цитата:
    1) Проверяем сервак на доступность

    Первый вопрос - зачем? Мы же не должны полагаться на сервер.
    Допустим, юзер вышел из системы вчера и профиль не синхронизировался (не было сети или доступа к домену). На следующий день домен стал доступным и юзер вновь вошел в свой профиль, но(!) ведь синхронизация произойдет только после завершения сеанса работы. А подчистку профилей лучше делать при загрузке Win, поэтому профили удалятся.

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 20:15 29-06-2010
    wolf0425



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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Если я не ошибаюсь, то Applications Data, Desktop, My Documents, пользовательский куст и  проч. Сверяется дата создания объектов и более новые из них - оставляются. Данные в Local Setings - остаются на лок. машине.
     
    wolf0425
    Если профиль потереть частично, то что будет?
     

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 23:00 29-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