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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех. Подскажите, пожалуйста, существует ли способ настроить стандартный вывод так, чтобы игнорировались (отбрасывались) пустые строки? Фильтр "Find", насколько я понимаю, здесь не помошник.
     
    Добавлено:
    Ещё такой вопрос. В конструкции For /F... In (...) Do... ненужные строки сверху (если их число заведомо известно) нетрудно обрезать через "Skip". Если обрабатываемая строка одна, а за ней несколько ненужных, то избавиться от них можно через GoTo на метку за циклом (как мне здесь когда-то подсказали). А существует ли приём обработать несколько строк и проигнорировать оставшиеся? Ну, к примеру, 2 первые строки отбрасываются, 2 обрабатываются и 2 оставшиеся также отбрасываются (без применения "Find" - допустим, содержание строк неизвестно).

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 08:46 30-06-2010 | Исправлено: BVV63, 08:57 30-06-2010
    mugil_cephalus

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

    Цитата:
    Ну, к примеру, 2 первые строки отбрасываются, 2 обрабатываются и 2 оставшиеся также отбрасываются (без применения "Find" - допустим, содержание строк неизвестно).

    счетчик поставить

    Код:
    set "cnt=0"
    set /a cnt+=1


    Цитата:
    Приветствую всех. Подскажите, пожалуйста, существует ли способ настроить стандартный вывод так, чтобы игнорировались (отбрасывались) пустые строки? Фильтр "Find", насколько я понимаю, здесь не помошник.

    for /?  
    for - игнорирует пустые строки
    + еще можно попробовать more /s ( см. help по more )

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



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

    Цитата:
    Приветствую всех. Подскажите, пожалуйста, существует ли способ настроить стандартный вывод так, чтобы игнорировались (отбрасывались) пустые строки? Фильтр "Find", насколько я понимаю, здесь не помошник.  
    зато findstr -r . поможет
     
    Добавлено:
    Цитата:
    счетчик поставить  
    заодно поставив в начало setlocal enabledelayedexpansion -  чтоб тот счетчик можно было внутри цикла проверять хотя бы как !переменную!  
     
    реально на две строки проще со !счетчиком! ещё не заморачиваться, просто на первом проходе установить заранее удаленную переменную, а второй проход определить по существованию переменной, а не по значению. если надо ловить три прохода - проще сразу делать !счетчик!

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 09:42 30-06-2010 | Исправлено: wolf0425, 10:17 30-06-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    wolf0425
    По второму вопросу - понял, спасибо.
    А насчёт пустых строк, так я итак для их удаления использую for, но возникают разные затруднения. Думал, может ещё что-нить можно применить. More /s тоже не совсем выход, он до конца пустые строки не убирает. Других идей нету?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:04 30-06-2010
    wolf0425



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

    Цитата:
    А насчёт пустых строк,  
    Других идей нету?
    на случай если тебе лениво самому читать хэлп findstr я тебе даже ключики написал для фильтра...

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    О, приношу извинение. Как-то не заметил Ваш ответ по данному вопросу. Сосредоточился на другом вопросе .
     
    Добавлено:
    wolf0425
    Чёй-то не помогает "findstr -r .". Вот простой пример, где в выводе есть пустые строки:
    Net Time /Domain:<домен> /Set /Yes | FindStr -r .
    Вывод одинаков, что без фильтра, что с ним.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:23 30-06-2010 | Исправлено: BVV63, 10:24 30-06-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу прощения, ошибся. Действительно, пустые строки удалились.
     
    Добавлено:
    Правда, не во всех случаях. В приведённом выше примере ежели домен указать несуществующий, то пустые строки остаются.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:24 30-06-2010 | Исправлено: BVV63, 12:32 30-06-2010
    ComradG



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

    Анзиппинг http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1700
    Можно вставлять в баты, но, полагаю, это будет не особо практично. Как думаете?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:55 30-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    Цитата:
    Правда, не во всех случаях. В приведённом выше примере ежели домен указать несуществующий, то пустые строки остаются.  
    они остаются потому что в фильтр не попадают, идут прямо на экран. попробуй
    Net Time /Domain:<домен> /Set /Yes 2>&1 | FindStr -r .  
     
    Добавлено:
    ComradG
    Цитата:
    Можно вставлять в баты, но, полагаю, это будет не особо практично. Как думаете?
    практично или не практично - можно будет сказать после того как приведешь код в пригодное для вызова из бата состояние.  
    т.е. разбор аргументов командной строки пока не хватает.
     
    хотя в общем-то проблем с распаковкой обычно и так нет - обычно в таких случаях просто носят sfx.
    А вот запаковать что-то уж не помню встроенными виндовыми средствами - однажды хотелось.
     

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Надо бы мысли синхронизировать...
    В принципе профили Default User и %userprofile% мало чем отличаются (в силу того, что при установке из Default User профиля копируется всё в папку новосозданного юзера) за исключением, пожалуй, NTUSER.DAT и пары ещё файлов (NTUSER.DAT вроде является пользовательским кустом [веткой, если угодно] реестра...)... Поэтому что- то тереть безопасно, а что- то просто так и не сотрёшь...
    Тебе надо всё что вновь было создано дублировать на, скажем, диск D:\ и после чего килять всё на диске C:\. Ну а если сервак доступен- тогда всё на сервак засасывать, а потом килять?

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 16:24 30-06-2010
    anton1209

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необходимо сделать батник, который будет действовать так:
    Выводит на экран названия программ:
     
    1. Программа 1
    2. Программа 2
     
    Если пользователь нажмет 1, то будет загружена первая программа с помощью wget, если 2, то вторая.
    wget лежит в папке с батником.  
    Батник должен закрываться только после окончания загрузки wget`ом.
     
    Спасибо.

    Всего записей: 28 | Зарегистр. 22-05-2010 | Отправлено: 17:52 30-06-2010 | Исправлено: anton1209, 17:54 30-06-2010
    ComradG



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

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

    Вэбээска писалась изначально для "просто" анзипа - ты ведь читал мой пост, что я малость притормаживаю. На счет параметров я не совсем уловил ход твоих мыслей: ты имеешь в виду, чтобы бат скармливал vbs-ке зип, который нужно распаковать, и папку, в которую должна производиться распаковка? Если так, то не знаю насколько это возможно. А на счет того при чем тут вообще бат - можно было бы загенерить с помощью батника vbs, которой бы скармливался зип и т.д. Словом, тут есть над чем подумать.

    Цитата:
    А вот запаковать что-то уж не помню встроенными виндовыми средствами - однажды хотелось.

    Через системный шелл это можно сделать. Я тут накидывал скрипт (тоже vbs), но он немного криво работает.
     
    Добавлено:
    anton1209

    Код:
    echo 1.Program
    echo 2.Program
    2>nul set /p choose="1.Program 2.Program"
    if /i %choose%==1 goto:first_program
    if /i %choose%==2 goto:second_program

    Что-то вроде этого

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 17:57 30-06-2010 | Исправлено: ComradG, 18:05 30-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    anton1209
    На 121 странице lorents выкладывал свой батник, который делает примерно то же что и тебе надо (он там картинки обрабатывает). Возьми его за пример, переделай для использования wget.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    А у тебя какие соображения по поводу поста выше? Стоит ли развивать идею или нет?
    Да! На счет штампов времени: их можно изменить, но через vbs. Как я ни старался через батники ничего путного не выходит.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 18:13 30-06-2010
    us0r



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

    Код:
    @ECHO OFF
    CLS
    :choise
    SET /P ANSW="CHOiSE:"
    IF /I "%ANSW%"=="1" START "VARIANT 1" /WAIT WGET тутПараметрыЗапуска && goto :eof
    IF /I "%ANSW%"=="2" START "VARIANT 2" /WAIT WGET тутПараметрыЗапуска && goto :eof
    ECHO WHAT?!
    :goto choise

    То или не то?
     
    Добавлено:
    res2001
    Ага, чуток обработать...

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



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

    Цитата:
    Стоит ли развивать идею или нет?  

    Мысль понятна. Никогда не пытался такое делать, надо почитать доку по NameSpace.
    Думаю кому интересно будет, тот сам под себя подгонит, а так функция выглядит вполне работоспособной для VBS.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Глянь на счет зиппинга средствами системы - только что наткнулся тут

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 18:39 30-06-2010
    res2001



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

    Цитата:
    Ага, чуток обработать...

    ну да, лишнего повыкидывать.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Ты тоже глянь. Там правда скрипт уж больно на мой похож.
     
    Добавлено:
    Блин, не просто похож, а процетировал прям дословно. Бывают же досадные совпадения.
     
    Добавлено:
    Что это за ахенея

    Код:
    set filename=c:\program files\example\file.zip\folder 1\test.doc
    set findpath=%filename:.zip/=.zip/!%
    echo %findpath%

    ???

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 18:41 30-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Цитата:
    Вэбээска писалась изначально для "просто" анзипа - ты ведь читал мой пост, что я малость притормаживаю.
    фигня, зато у тебя там кондиционер, а в Москве - жара.
    Но все равно выздоравливай быстрее - нефиг разлеживаться
     

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

    Цитата:
    А на счет того при чем тут вообще бат - можно было бы загенерить с помощью батника vbs, которой бы скармливался зип и т.д.
    ну, передавать имена зипа и адреса распаковки на этапе генерации кода - тоже конечно вариант, но правильнее аргументы разобрать.  
     

    Цитата:
    Что это за ахенея  
    эта замена подстроки в строке, только что-то я совпадающей подстроки там не вижу....

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 19:31 30-06-2010 | Исправлено: wolf0425, 19:32 30-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