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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    Начало на прошлой странице  
    А тут просто пытались на примерах доказать, что обработка вывода в форе идет после выполнения команды, а не во время его.
    А замеры времени - это фигня, особо к теме не относящаяся просто к слову пришлось.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:54 18-07-2010 | Исправлено: res2001, 08:57 18-07-2010
    wolf0425



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

    Цитата:
    А тут просто пытались на примерах доказать, что обработка вывода в форе идет после выполнения команды, а не во время его.  
    ну вот с пингом и видно замечательно - он то выполняется  4 секунды, фор всё это время молчит, а потом все строки моментом выплевывает.
     
     
    Добавлено:
    а вообще для параллельного отображения и записи лога есть команда tee, точнее её разные порты для виндов. Только вот  буферирование  у неё - afaik несколько килобайт, типа 6-8 в разных модификациях, а вовсе не построчное.
    т.е. для короткой одноразовой выдачи или для просмотра длиииииннной простыни - годится, а для оперативного присмотра сколько там % напечатано - нет.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 09:35 18-07-2010 | Исправлено: wolf0425, 09:42 18-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=2840#7
    твое мнение?
     
    Добавлено:

    Цитата:
    ну вот с пингом и видно замечательно - он то выполняется  4 секунды, фор всё это время молчит, а потом все строки моментом выплевывает.  
     

    а route print , attrib , ftype , fsutil fsinfo , tasklist ?
    у ping'a , ipconfig и других сетевых прог - динамический сбор инфы, у остальных инфа статична, то есть готова к stdout или stderr
    p.s.
    купание красного коня петрова-водкина нам не светит, а сферического коня в вакууме сварганим...    
     
    Добавлено:

    Цитата:
    Добавлено:  
    а вообще для параллельного отображения и записи лога есть команда tee, точнее её разные порты для виндов. Только вот  буферирование  у неё - afaik несколько килобайт, типа 6-8 в разных модификациях, а вовсе не построчное.  
    т.е. для короткой одноразовой выдачи или для просмотра длиииииннной простыни - годится, а для оперативного присмотра сколько там % напечатано - нет.

    тогда уж проще

    Цитата:
    lorents  
     
    Код:1>%temp%\png.log 2>&1 "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1  
    type %temp%\png.log  


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



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

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

    Цитата:
    твое мнение?  
    а чего мое мнение? ну работают русские буковки в качестве переменных цикла - это же не значит, что их и нужно там использовать, мне как-то и 62 хватало, а вообще я более десятка разом использовал только однажды, afair (там более десятка в одном /f цикле и было, плюс ещё пара циклов)
     
    но вообще надо для прикола посмотреть  - что там при смене страницы творится, может можно раздельно русские 1251 и русские кои8 поюзать.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:39 18-07-2010 | Исправлено: wolf0425, 10:47 18-07-2010
    mugil_cephalus

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

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

    а любопытство - уже не мотив ?

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



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

    Цитата:
    а любопытство - уже не мотив ?
    в такую жару -нет

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:48 18-07-2010
    mugil_cephalus

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

    Цитата:
    в такую жару -нет  

    ты тоже плавишся в москве ?
     
    Добавлено:

    Цитата:
    может можно раздельно русские 1251 и русские кои8 поюзать.

    а почему нельзя - коды то символов разные, кажется ,...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:52 18-07-2010
    NIKZZZZ



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

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

    Русские буквы работают, нужно только учитывать, что в dos кодировке у них другая последовательность.
    Пример:

    Код:
    for /f "usebackq tokens=1,2,3,4 delims= " %%а in ('1 2 3 4') do echo %%а %%б %%в %%г

     
    Если его сохранить в 1251 (win), пример прекрасно работает.
     

    Код:
    for /f "usebackq tokens=1,2,3,4 delims= " %%р in ('1 2 3 4') do echo %%р %%с %%т %%у

     
    Второй пример аналог первого в dos (866) кодировке.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:16 18-07-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поздравьте меня, я наконец то нашел альтернативу imagemagick, точнее ее написали по моей просьба. Простите за
     
    и еще где можно прочитать про параметр copy /#?
    Просто я сейчас использую

    Код:
    copy "%%~fi" "%%~dpni_nopngkt.png"

    но не знаю надо какие-то параметры перед copy или нет?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 17:25 18-07-2010 | Исправлено: lorents, 17:33 18-07-2010
    wolf0425



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

    Цитата:
    и еще где можно прочитать про параметр copy /#?  
    copy /?  ????
     
     

    Цитата:
    но не знаю надо какие-то параметры перед copy или нет?
    ну перед - параметров точно не бывает, а  /b /y я бы наверно в ключики добавил...
     
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 17:49 18-07-2010
    lorents



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

    Цитата:
    ну перед - параметров точно не бывает

    точно, ошибочка вышла

    Цитата:
    /b /y я бы наверно в ключики добавил...  

    ок, так и сделаю, спасибо

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 17:59 18-07-2010
    IFKey



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

    Цитата:
    Skype.lnk
    QIP_2005.lnk
    Mail_Ru_Агент.lnk

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

    Цитата:
    "Application Data\Mail.Ru\Agent\magent.exe"
    "C:\Program Files\Skype\Phone\Skype.exe"
    "C:\Program Files\QIP\qip.exe"

    работало но странно, по отдельности каждая строка запускается нормально, а все в месте когда, запускается только первая, или масимум вторая. мудрил мудрил, но там и не сделал.
    Как сделать запуск этих трех программ разом через bat фаил?

    Всего записей: 331 | Зарегистр. 20-03-2007 | Отправлено: 18:49 18-07-2010 | Исправлено: IFKey, 18:52 18-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    IFKey
    start "" "Application Data\Mail.Ru\Agent\magent.exe"
    start "" "C:\Program Files\Skype\Phone\Skype.exe"
    start "" "C:\Program Files\QIP\qip.exe"

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IFKey
    Цитата:
    через ярлыки:run.cmd  
     
    ярлыки из батника запускаются так:

    Код:
    start "" Skype.lnk  
    start "" QIP_2005.lnk  
    start "" Mail_Ru_Агент.lnk


    Цитата:
    Пытался четко пути прописывать:  
    первый путь- нифига не четкий, что там запустится зависит от того где батник стартует.
    и тоже через старт лучше запускать
    start "" "C:\Program Files\QIP\qip.exe"
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 18:56 18-07-2010 | Исправлено: wolf0425, 18:57 18-07-2010
    lorents



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

    Код:
    call :compare "%%~dpni_pro.tmp" "%%~dpni_opt.tmp" "%%~fi" "%%~nxi"
     
    :compare
    if %~z1 LSS %~z2 (
        DEL /F /Q %2
        DEL /F /Q %3
        REN %1 %4
    ) else (
        DEL /F /Q %1
        DEL /F /Q %3
        REN %2 %4
    )
    exit /b

    Если в  "%%~dpni_pro.tmp" "%%~dpni_opt.tmp" есть знак %, то код не работает, как это можно исправить?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 20:12 18-07-2010 | Исправлено: lorents, 20:12 18-07-2010
    wolf0425



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

    Цитата:
    Если есть знак %, то код не работает,
    наплюй, нефиг % в имена вставлять.
    будешь сегодня горбатиться чтоб % обойти, завтра - & и ^ в имена воткнут
     
    ну или перепписывай веь батник, чтоб всегда была работа в текущем каталоге, без необходимости указания путей - у тебя же пока только с путями проблема, не  с именами
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 20:53 18-07-2010 | Исправлено: wolf0425, 21:03 18-07-2010
    lorents



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

    Цитата:
    наплюй, нефиг % в имена вставлять.  

    ок, так и сделаю

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 22:34 18-07-2010
    Con

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста. Достаточно тривиальная задача - закрыть все приложения запущенные с USB диска. Не могу найти подходящую утилиту (ну или сочетание утилит).
    Просмотрел нирсовтовский, сисинтерналовский пакеты и стандартные windows утилиты.
    Как правило ни одна из утилит не различает путь к запущенному процессу, только имя.
    Единственное исключение nircmd (closeprocess, killprocess), но требует точного указания файла.
     
    ps. я не хочу извлекать/отключать диск, ищу решение для закрытия всех процессов запущенных с определенного диска.

    Всего записей: 40 | Зарегистр. 29-01-2007 | Отправлено: 01:48 19-07-2010 | Исправлено: Con, 02:04 19-07-2010
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Con
    отсюда вытаскивай пути: pv -e | find "буква:\"
    или отсюда: pv -o"%f" *.exe | find /i "буква:\"(в батнике знак "%" удваивать конечно)
    FOR /? в помощь...
    pv тут: http://www.teamcti.com/pview/prcview.htm
    покилять: pv -k

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 02:55 19-07-2010 | Исправлено: igor_andreev, 03:07 19-07-2010
    mugil_cephalus

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

    Цитата:
    copy /?  ????  

    а что, в англицком хелпе есть copy /#   ?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:58 19-07-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