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

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

    Цитата:
    capicom.dll

    спс. Посмотрю.

    Цитата:
    koi8-r разбирается аналогично utf-8 - ничего сложно там нет.

    Знаю, но лень разбираться. А в почте кои8 еще достаточно широко применяется. Хотелось бы одним способом все перекодировать. Или сторонней приблудой, или js скриптами.
    Пока не нашел JS перекодировщик КОИ8-Р.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:49 05-07-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую. Запарился отлаживать такой фрагмент (делает (вернее, должен делать) список разделов HDD в системе):

    Код:
    SetLocal EnableDelayedExpansion
    For /F "Skip=1 Tokens=1 UseBackQ" %%A In (
            `WMIC LogicalDisk Get Caption`
        ) Do (
        If %%A GEq A (
    REM Отбрасывает пустую строку в конце.
            For /F "Skip=1 Tokens=1 UseBackQ" %%a In (
                `WMIC LogicalDisk Where "Caption="%%A"" Get DriveType`
                ) Do (
                If %%a==3 (
                    Echo %%A>>%Log%
                    Set HDDPartitions=!HDDPartitions! %%A
                    )
                )
            )
        )
    EndLocal & (
        Set HDDPartitions=%HDDPartitions%
        )

    Почему-то(?) переменная получается:
    " C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: A: C: D: E: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D: C: D:". Хотя, я рассчитывал на то, что она будет " C: D:". Включенное эхо показывает какую-то галиматью. Кто-нибудь может прокомментировать, в чём моя ошибка и чего там реально происходит? Заранее благодарен.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 13:59 05-07-2010 | Исправлено: BVV63, 14:01 05-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ComradG
    посмотрел мсдн по capicom, в утилитах там кроме base64 ничего полезного для меня больше нету.
     
    Добавлено:
    BVV63
    У меня нормально отработал скрипт. Вывел только буквы локальных жестяков.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:00 05-07-2010
    ComradG



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

    Цитата:
    кроме base64 ничего полезного для меня больше нету

    А хэши?
     
    BVV63
    Может
    Код:
    `
    все же стоит поменять на
    Код:
    '
    даже если и указано было юзать usebackq.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:19 05-07-2010 | Исправлено: ComradG, 14:20 05-07-2010
    BVV63



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

    Цитата:
    Вывел только буквы локальных жестяков.

    Да, но почему они многократно дублированы?
    ComradG
    Не помогает.
     
    Добавлено:
    Чтой-то до сих пор с пятницы форум не починили. При отправке каждого сообщения - ошибка.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 14:23 05-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    Вполне возможно, что где-то в скрипте (а приведен ведь его кусок, верно?) есть "левый" цикл.
     
    Добавлено:
    res2001
    Если надумаешь на счет capicom.dll можно забрать отдельным паком с сайта мелкософта по этой ссылке

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:27 05-07-2010
    BVV63



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

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 14:30 05-07-2010
    res2001



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

    Цитата:
    по этой ссылке

    спс.
    BVV63
    такое впечатление, что код вызывается несколько раз.
     
    Добавлено:
    BVV63
    Если команда
    WMIC LogicalDisk Get Caption
    выдает нормальный, не дублированный список, то дублироваться не должно.
    Если все же дублируется, скорее всего есть несколько вызовов этого куска кода.

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



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

    у меня всё нормально отрабатывает, только я минимально почистил мусор:

    Код:
    @echo off
    set log=%~n0.log
    setlocal enabledelayedexpansion
    for /f "skip=1" %%A in ('wmic logicaldisk get caption') do (
            for /f "skip=1" %%a in ('wmic logicaldisk where "caption="%%A"" get drivetype') do (
                If %%a equ 3 (
                    1>>%log% echo %%A
                    set hddpartitions=!hddpartitions! %%A
                )
            )
    )
    endlocal & set hddpartitions=%hddpartitions%
    set hddpartitions
     

    ну а что два hdd (из трех) вообще никак в лог не попали - наверно так и задумано

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:54 05-07-2010 | Исправлено: wolf0425, 15:58 05-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Ты не просто почистил мусор, - ты привел его в читабельный вид. BVV63 без обид.
    Ну, как на счет ругани в адрес зипующей vbs-ки? Какие нашел баги и т.д. Мне очень надо, чтобы продолжить ее развитие на общее благо форумчан.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:30 05-07-2010 | Исправлено: ComradG, 16:31 05-07-2010
    wolf0425



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

    Цитата:
    ты привел его в читабельный вид.
    ну нравится мне формат лесенки/скобок по C&R
     

    Цитата:
    Ну, как на счет ругани в адрес зипующей vbs-ки? Какие нашел баги и т.д.
    да работает вроде. как-то.
    только например имя "consist «quotes» and — das0000.jpg" переварить не может (в составе папки, отданной в аргументах). и мне интересно - это врожденная проблема виндовой библиотеки или как-то обойти можно.
    но это не так чтоб сильно критичный глюк для тех применений, для которых нужен такой vbs...
     
    а, ещё бы надо чтоб при непонятной скрипту команде - он таки печатал хэлп, а не молча закрывался.
    А в идеале хочется чтоб ты запомнил это и на будущие скрипты

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:01 05-07-2010 | Исправлено: wolf0425, 17:05 05-07-2010
    lorents



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

    Цитата:
    А где скрипт отображает пути?

    когда работают именно программы, они отображают не правильно, есть возможность, чтобы  когда выбраны все параметры, мой batch начинает работать в кодировке chcp 1251?

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



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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    может ты и прав, я просто не хочу что либо менять в настройках у пользователя
    а как можно сделать, что я спросил, просто не думаю четыре раза писать
    1>nul chcp 1251
     
    Добавлено:
    wolf0425
    Ты прав. сделаю как ты говоришь
     
     
    Добавлено:
    wolf0425 вот эта версия вроде последняя правильно?
     

    Код:
    @echo off
    chcp 1251>nul
    title Я прога
     
    "%CD%\reg.exe" query "HKCU\Console" /s|findstr /i /r FaceName.*Terminal 1>nul && (
     
    for /f "delims=" %%A in ('""%CD%\reg.exe" query "HKCU\Console"" ^|findstr /b /i /r HKEY_CURRENT_USER\\Console\\.') do "%CD%\reg.exe" delete "%%~A" /f  
     
    "%CD%\reg.exe" add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
     
    start "" "%~f0" %* & exit
     
    ) 1>nul
     
    :begin
    echo Кракозябрам нет!
     
    pause
    exit  

     
    А можно заменить вместо %CD% на %SystemRoot%\System32\
    так вроде лучше будет?
     
    Добавлено:
    и еще один вопрос, как вернуть настройки батника в первоначальный вариант, т.е. как было по умолчанию?

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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Использую батник для пакетного перекодирования wav-mp3, при обработке каждого файла время, которое пишет батник не изменяется, оно соответствует началу конвертации первого файла. Как это исправить?

    Код:
    @echo off
    :: *** старт команд ***
    for %%i in (*.wav) do (
    echo ********** File %%i **********
    echo.
    echo [%DATE% %TIME%] start convert audio
    echo.
    "C:\Program Files\1\clienc\lame.exe" --cbr --strictly-enforce-ISO --noreplaygain -b 160 -q0 "%%~ni.wav" "D:\temp\outputbp\%%~ni.mp3"
    )
     

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 19:42 05-07-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vladins
    Странно, у меня каждый раз новое время пишет.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:59 05-07-2010 | Исправлено: king_stiven, 20:04 05-07-2010
    Vladins

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    перед словами start convert audio пишется дата и время. Хотелось бы видеть время начала конвертации кажого файла.

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 20:05 05-07-2010
    wolf0425



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

    Цитата:
    А можно заменить вместо %CD% на %SystemRoot%\System32\
    так вроде лучше будет?  
    можно, а можно просто убрать - это было прописано для win2000, где своего reg.exe нет
     

    Цитата:
    и еще один вопрос, как вернуть настройки батника в первоначальный вариант, т.е. как было по умолчанию?
    или предварительно забэкапить или вручную опставить какие нравятся, правой кнопкой мыши на заголовок запущенного батника - Defaults,  Fonts...
     
     
     
    Добавлено:
    Цитата:
    перед словами start convert audio пишется дата и время. Хотелось бы видеть время начала конвертации кажого файла.
    Vladins замени строку на

    Код:
    call echo [%%DATE%% %%TIME%%] start convert audio  

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:22 05-07-2010 | Исправлено: wolf0425, 20:28 05-07-2010
    lorents



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

    Код:
    @echo off
    chcp 1251>nul
    title Rus
     
    "%CD%\reg.exe" query "HKCU\Console" /s|findstr /i /r FaceName.*Terminal 1>nul && (
     
    for /f "delims=" %%A in ('""%CD%\reg.exe" query "HKCU\Console"" ^|findstr /b /i /r HKEY_CURRENT_USER\\Console\\.') do "%CD%\reg.exe" delete "%%~A" /f  
     
    reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
    reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
    reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
    reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
     
    start "" "%~f0" %* & exit
     
    ) 1>nul
     
    :begin
    echo Кракозябрам нет!
     
    pause
    exit

     
    выдает
    C:\Documents and Settings\Lorents>"D:\Прочее\Image Optimizer 1.2.0.0\Docs\Rus.bat"
    ""C:\Documents and Settings\Lorents\reg.exe"" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425 Работает! Еще вопрос: для этого батника (и других по пакетной конвертации)
    ставлю низкий приоритет таким способом: батник wav to mp3 переименовываю в 1.bat а потом запускаю второй батник в той же папке с таким содержимым:

    Код:
    start /low 1.bat

    Есть ли возможность прописать низкий приоритет в батнике wav to mp3, чтобы не создавать  
    второй батник?
     

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 20:38 05-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