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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый вечер!
    Как сделаеть, чтобы процесс отображался и в командной строке, и записывался в файл png.log одновременно?

    Код:
    "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1 > %temp%\png.log

    P.S.: Так и не получилось заставить ImageMagick дружить с кириллицей

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 23:25 14-07-2010 | Исправлено: lorents, 23:33 14-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maqentaer
    кавычки не помогают
     
    Добавлено:
    lorents
    засунь выполнение команды в for /f "tokens=*" а в теле цикла выводи в лог и на экран.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:36 15-07-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Я не совсем понял как это сделать, можно пример?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:11 15-07-2010 | Исправлено: lorents, 10:37 15-07-2010
    res2001



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

    Код:
    for /f "tokens=*" %%a in ('"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1') do %temp%\png.log> echo %%a && echo %%a

    Как-то так. Код не проверял. Скорее всего какие-нить симолы типа ~ надо будет экранировать знаком ^.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:34 15-07-2010
    lorents



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

    Код:
    "D:\Прочее\Image" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    Не удается найти файл C:\DOCUME~1\Lorents\LOCALS~1\Temp\png.log.
    Не удается найти C:\DOCUME~1\Lorents\LOCALS~1\Temp\png.log

    Цитата:
    Скорее всего какие-нить симолы типа ~ надо будет экранировать знаком ^

    а какие именно?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:41 15-07-2010 | Исправлено: lorents, 10:43 15-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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 | Отправлено: 11:46 15-07-2010
    res2001



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

    Цитата:
    выдает следующую ошибку  


    Цитата:
    "D:\Прочее\Image" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.  

    Этот путь D:\Прочее\Image откуда взялся? из %0 или %1?
     

    Цитата:
    а какие именно?

    может кавычки или тильду.
    хотя у меня такой вариант:

    Код:
    set p=C:\Program Files\WinRAR
    for /f "tokens=*" %%a in ('"%p:~,-6%WinRAR\rar.exe" /?') do echo %%a
     

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Способ хороший, но мне бы отображать процесс в режиме реального времени
     
    res2001

    Цитата:
    Этот путь D:\Прочее\Image откуда взялся? из %0 или %1?  

    это путь к картинке, значит это %1

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 12:15 15-07-2010
    mugil_cephalus

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

    Цитата:
    Написал тут батник некий, в начале стоит  
    setlocal ENABLEDELAYEDEXPANSION  

    посм. http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1580#10

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:19 15-07-2010
    res2001



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

    Цитата:
    Способ хороший, но мне бы отображать процесс в режиме реального времени  

    В случае с фором тоже реального времени не будет - весь вывод будет производится только после того как прога отработает. Такой уж он не многозадачный, наш cmd.exe.
    Так что воспользуйся советом mugil_cephalus, он адназначна лучше моего варианта.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:24 15-07-2010
    mugil_cephalus

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

    Код:
    for /f "tokens=*" %%a in ('""%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1"') do (
    1>>%temp%\png.log 2>&1 (echo.%%~a)
    2>&1 (echo.%%~a)
    )
    pause

    p.s.
    line-by-line online

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:27 15-07-2010 | Исправлено: mugil_cephalus, 12:32 15-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mugil_cephalus
    собственно, я сам пришел к такому же варианту с переменной.
    С cmd у меня не прокатит, поскольку надо не только вывести сообщение.
     
     
    Добавлено:
    mugil_cephalus
    с чего ты взял что в форе будет онлайн?
    Запусти в форе какую-нибудь команду, которая долго отрабатывает и при этом сыпет сообщения на экран. Например ping -n 20 127.0.0.1 и все сам увидишь.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:31 15-07-2010 | Исправлено: res2001, 12:35 15-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    да, я видел...
    просто, ощущение, что там 1 Гб лога...  
    зачем то просит... cmd сейчас такая быстрая , что разницы от кодов не заметишь...  
     
    Добавлено:

    Цитата:
    с чего ты взял что в форе будет онлайн?  

    думал прога выдает несколько var %%a

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:39 15-07-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    А в чем разница между двумя выше представленными кодами?
    Я разницы не увидел, оба кода показывают в командной строке после того как optipng заканчивает работать
     
    Чуть не забыл, спасибо

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 12:48 15-07-2010 | Исправлено: lorents, 12:51 15-07-2010
    BVV63



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

    Код:
    For /F "Delims== Skip=2 Tokens=2 UseBackQ" %%A In (`WMIC NTEventLog Get Name /Value`) Do (
    Echo %%A
    Copy %%A /Y <Destination>)

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

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 14:31 15-07-2010 | Исправлено: BVV63, 14:31 15-07-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите решить одно задачу, это связано с ImageMagick

    Код:
    "%~dp0Docs\convert.exe" \image\1.png -background Black -alpha Background \image\2.png

    Данный код работает, т.к. здесь используются относительные пути, где нет кириллицы
    Как получить относительные пути "%%~fi"

    Код:
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
     
    )


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

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



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

    Цитата:
    Такое впечатление, что символы перевода строки и возврата каретки откуда-то берутся.
    их маленькие зеленые человечки присылают. в смысле - лишние символы 0x0D в конец строки, при разделении строк 0D0A
    МЗЧ работают в МС и написали WMIC
     
    ну, если взять на веру что расширение будет Evt - то тут то можно поменять %%А на %%~dpnA.evt
    а универсальное решение без внешних утилит - самому интересно.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:15 15-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lorents
    может я чего то недопонял, но по моему так:

    Код:
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
     echo Images\%%i
    )  
     

    У тебя софтина отказывается работать, если в полном пути есть русские имена?
    А русские имена файлов она тоже не понимает? Как с  этим будешь бороться?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:50 15-07-2010
    lorents



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

    Цитата:
    может я чего то недопонял, но по моему так:  

    я не много нен правильно объяснил
    да я сейчас подумал и понял что ничего не выйдет
    придется делать копирование файлов в temp и изменять имя файла
    Как сделать, чтобы изменить название файла, но чтобы расширение осталось тем же?
     
     
    Добавлено:
    и еще где можно прочитать про параметр copy /#?

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

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



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

    Цитата:
    Как сделать, чтобы изменить название файла, но чтобы расширение осталось тем же?  
     
    а у тебя что - расширение не жестко прошитое .png?
     
     
    Добавлено:
    res2001
    Цитата:
    У тебя софтина отказывается работать, если в полном пути есть русские имена?  
    А русские имена файлов она тоже не понимает? Как с  этим будешь бороться?
    ага, обсуждали же уже эту кривую софтину и что б такое с ней сделать.
    Вариант добиться от автора устранения глюков обработки неамериканской кодировки имен - почему-то не прошел, наверно автору оптимизировать картинки на дополнительные 0.0001%  - важнее чем вообще разбираться с тем, как в виндах положено открывать файлы

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:00 15-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