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

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



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

    Цитата:
    Ну попробуй отредактировать например
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSetХХХ\Enum\USB\Vid_ХХХХХХ_ХХХХ  

    плохой например - я ключик в HKLM\SYSTEM\ControlSet001\Enum\USB\Vid_0ea0&Pid_6803 добавил совершенно спокойно.  
    но где-то в списке действительно что-то недоступное было.
     
    Добавлено:
    Nomasster
    Цитата:
    да, запарился)
    экпортируешь в текст
    regedit /ea 11.reg  HKEY_LOCAL_MACHINE\SYSTEM
    фильтуешь чтоб остались только имена веток что надо прибить, тут findstr или sed тебе в помощь.
    добавляешь REGEDIT4 в начало (если потер фильтрами) и приводишь все строки в вид типа  
    [-HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\Vid_0ea0&Pid_6803]
    после чего вспомнив когда последний раз бэкапился добавляешь regedit /s %fullpath%\del4enado.reg в шедулер на следующую минуту.

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



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

    Цитата:
    Ну попробуй отредактировать например  

    Да, ты прав. Проверил на WinXP SP3. Завтра посмотрю на серверах и на Вин2000.
    Права хитро распределены:
    На ветки HKEY_LOCAL_MACHINE\SYSTEM\ControlSetХХХ\Enum\XXX\XXX_ХХХХХХ_ХХХХ\XXXXXXXX\Device Parameters администраторам доступ есть  
    на все остальные ветки в
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSetХХХ\Enum\ у админов доступ только на чтение.
     
    Добавлено:
    Nomasster
    А может дать разрешение админам на Enum, спокойно сделать свои дела, а потом удалить разрешение.
    Работать с разрешениями можно с помощью regini.
    Вот ссылка на пример использования этой утилиты.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 21:48 24-06-2010 | Исправлено: res2001, 21:50 24-06-2010
    lorents



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

    Код:
    for %%i in (0,256) do for %%j in (0,5) do pngout -q -k1 -s1 -b%%i -f%%j -c3 -d1 %1

    там где (0,256) здесь идет перебор значений 0 и 256, или 0, 1, 2, ..., 256? Я так понимаю что всех значений от 0 до 256

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

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



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

    Цитата:
    там где (0,256) здесь идет перебор значений 0 и 256
    да, конечно, в полном соотвестствии с for /?

    Цитата:
    Я так понимаю что всех значений от 0 до 256
    а самому проверить - никак?
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 00:35 25-06-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Цитата:
    а консольная прога не подойдет ?  
    типа - http://ss64.net/westlake/nt/ConGetFile.zip
    вообще говоря, срабатывает. Т.е. окошко выбора файла появляется и функионирует.
    Остаётся вопрос как прикрутить.  
    Вот так вроде получается

    Цитата:
    for /f "tokens=*" %%a in ('congetfile') do set "filename=%%a"

    Спасибо. А тоже самое но под выбор папки нет?

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 01:09 25-06-2010 | Исправлено: gryu, 01:19 25-06-2010
    igor_andreev

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

    Цитата:
    Остаётся вопрос как прикрутить.


    Код:

    FOR /F %%A IN ('CONGETFILE.EXE') DO SET "FILE=%%A"

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 01:18 25-06-2010 | Исправлено: igor_andreev, 01:18 25-06-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Ага. Уже нашёл.  
    Теперь выбор папки остался. (для сохранения)

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 01:21 25-06-2010
    igor_andreev

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

    Код:

    Option Explicit
    Dim oShell, oFolder, oFolderItem
     
    On Error Resume Next
    Set oShell = CreateObject("Shell.Application")
    Set oFolder = oShell.BrowseForFolder(&H0, "Select folder", &H0011, 17)
    Set oFolderItem = oFolder.Items.Item
    If Not Err<>0 Then Wscript.Echo oFolderItem.Path
    Set oShell = Nothing
    WScript.Quit

    Прикручивать так же, как congetfile.  
    for /f %%a in ('cscript.exe file.vbs //nologo') do ...
     
     
    Добавлено:
    А модераторы кстати в отпуске что-ли? У мну ощущение, что мы пишем на 16-й странице в теме Задачи на bat-файлах 9
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 01:40 25-06-2010
    Nomasster



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

    Всего записей: 74 | Зарегистр. 31-05-2007 | Отправлено: 04:53 25-06-2010
    SLIDER999

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть лог файл содержания:

    Цитата:
    05:05:05 Лок 00006476_1766299D5C1342BC8FA8C1150E02E28E.gzdat    Неверный формат     --->\ERRORDAT\Error_Form\102_6476\00006476_1766299D5C1342BC8FA8C1150E02E28E.gzdat
    05:05:05 Лок 00006344_8979B829D54E45179DBF41973F166AED.gzdat    Старый файл     --->\ERRORDAT\Old_Data\102_6344\00006344_8979B829D54E45179DBF41973F166AED.gzdat
    05:05:07 Лок 00006342_3D0B4E7FA6194869BDFD02BD393BECE0.gzdat    Неверный формат     --->\ERRORDAT\Error_Form\102_6342\00006342_3D0B4E7FA6194869BDFD02BD393BECE0.gzdat
    05:06:15 *** 00001862_892EF8857345477C878E0630B5E79BE1.gzdat    Неверный формат     --->\ERRORDAT\Error_Form\0_0\00001862_892EF8857345477C878E0630B5E79BE1.gzdat

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

    Всего записей: 261 | Зарегистр. 16-03-2005 | Отправлено: 09:30 25-06-2010
    res2001



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

    Код:
    @echo off
    for /F "tokens=1-3" %%a in (test.txt) do echo %%a %%b %%c
     

     
    Добавлено:
    Nomasster
    Вот странно. На моем компе на работе полный доступ к ...\Enum имеют и администраторы.
    Сам не выставлял. Интересно, что за софтина так делает.
    На Вин2003 и Вин2000 все по умолчанию, т.е. у админов доступ только к разделам Device Parameters

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:40 25-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001 SLIDER999
    если сообщение об ошибке всегда из двух слов - то "tokens=1-4" и %%a %%b %%c %%d соответсвенно.
    но лучше все же так не закладываться и отрезать хвост регэкспом

    Код:
    sed -r "s; +--->.*$;;g" <test.txt  >text2.txt

    sed в шапке или в яндексе

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:00 25-06-2010 | Исправлено: wolf0425, 11:00 25-06-2010
    SLIDER999

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    спасибо, но если описание не состоит из 1 или 2 слов
    вот возможные варианты:
    Неверный формат - 2
    Старый файл - 2
    В файле нет меток формата - 5 !!!
    Нет набора параметров - 3
     
    Вобщем не очень отрабатывает. Как еще можно улучшить?

    Всего записей: 261 | Зарегистр. 16-03-2005 | Отправлено: 11:00 25-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SLIDER999
    Цитата:
    Вобщем не очень отрабатывает. Как еще можно улучшить?
    не рассчитывать на халяву и использовать sed.
    без седа в принципе можно -  но тошно.
     

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



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

    Код:
    @echo off
    for /F "tokens=1-3,*" %%a in (test.txt) do (
        for /F "tokens=1 delims=>-" %%i in ("%%d") do echo %%a %%b %%c %%i
    )
     

    Как-то так вроде
    Добавлено
    Отредактировал код.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:17 25-06-2010 | Исправлено: res2001, 11:27 25-06-2010
    lorents



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

    Код:
    @echo off
    for /f "delims=" %%i in ('dir /b /s /a-d Dir1\*.png') do (
        for %%j in (32k,16k,8k,4k,2k,1k,512,256) do (
            "%~dp0Docs\prepng.exe" "%%~fi" "%%~dpni_%%j.png"
            call :pngopt "%%~dpni_%%j.png"
            "%~dp0Docs\pngout.exe" /k0 /n2 "%%~dpni_%%j.png"
            "%~dp0Docs\advpng.exe" -z -4 "%%~dpni_%%j.png"
            "%~dp0Docs\deflopt.exe" "%%~dpni_%%j.png"
        )
    )
     
    :pngopt
    "%~dp0Docs\optipng.exe" -i0 -zw%%j -zc1-9 -zm1-9 -zs0-3 -f0-5 -full -force %1 > %temp%\png.log
    for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
        set f=%%i
    )
    set f=%f:~1,1%
    del %temp%\png.log
    "%~dp0Docs\pngout.exe" /k0 /n2 /f%f% %1

     
    Как можно получить значение %%j для :pngopt?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 12:21 25-06-2010 | Исправлено: lorents, 12:22 25-06-2010
    igor_andreev

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

    Код:

        for %%j in (32k,16k,8k,4k,2k,1k,512,256) do (  
            "%~dp0Docs\prepng.exe" "%%~fi" "%%~dpni_%%j.png"  
            call :pngopt "%%~dpni_%%j.png" %%j

     
    а на метке :pngopt %%j уже будет называться %2

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 12:38 25-06-2010 | Исправлено: igor_andreev, 12:40 25-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    %%j вроде как счётчик?
    Всяко можешь попробовать:

    Код:
    setlocal enabledelayedexpansion
    set "var!ololo!"="%%j"

     
    Добавлено:
    И вставь его сюда:

    Код:
    @echo off  
    for /f "delims=" %%i in ('dir /b /s /a-d Dir1\*.png') do (
        set "var!ololo!"="%%j"
        for %%j in (32k,16k,8k,4k,2k,1k,512,256) do (  
            "%~dp0Docs\prepng.exe" "%%~fi" "%%~dpni_%%j.png"

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:46 25-06-2010 | Исправлено: us0r, 12:50 25-06-2010
    SLIDER999

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

    Цитата:
    S:\ПетровАМ\_Скрипты\log\LOG_TEMP\07_06_20_dat.log
    S:\ПетровАМ\_Скрипты\log\LOG_TEMP\07_06_21_dat.log
    S:\ПетровАМ\_Скрипты\log\LOG_TEMP\07_06_22_dat.log
    S:\ПетровАМ\_Скрипты\log\LOG_TEMP\07_06_23_dat.log
    S:\ПетровАМ\_Скрипты\log\LOG_TEMP\07_06_24_dat.log
    и т.д.

    Нужно привести к виду:

    Цитата:
    LOG_TEMP\07_06_20_dat.log
    LOG_TEMP\07_06_21_dat.log
    LOG_TEMP\07_06_22_dat.log
    LOG_TEMP\07_06_23_dat.log
    LOG_TEMP\07_06_24_dat.log
    и т.д.

     
    Заранее спаибо! Надеюсь на помощь

    Всего записей: 261 | Зарегистр. 16-03-2005 | Отправлено: 12:50 25-06-2010
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SLIDER999
    for /f "tokens=4* delims=\" %%a in (old.txt) do echo %%b>>new.txt

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 13:07 25-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