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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10

Модерирует : KLASS, IFkO

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 10
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7, часть 8, часть 9)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    lorents



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

    Код:
    for %%a in ("%~dpn1-zs1.png") do set "size-1=%%~za"
    for %%b in ("%~dpn1-zs0.png") do set "size-2=%%~zb"
    set /a "size-3=!size-1!+!size-2!"
    echo !size-3!


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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 14:34 13-02-2011 | Исправлено: lorents, 15:03 13-02-2011
    01MDM



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

    Код:
     
    echo %~dpn1-zs1.png
     

    Тут должно быть либо %~dpn0n1-zs1.png, либо %~dpn1*-zs1.png. Исходя из батника.


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:11 13-02-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    проверил, файлы batch видит
     
    Он не может создать переменные size-1 и size-2

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 17:11 13-02-2011 | Исправлено: lorents, 17:11 13-02-2011
    01MDM



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

    Цитата:
    проверил, файлы batch видит

    Что-то не понимаю: %~dpn1-zs1.png. Что файлы называются так?

    Код:
     
    -zs1.png
    -zs0.png
     

    Без привязки к коду остается только догадываться.
    Ну если файлы видит, то попробуй

    Код:
     
    set /a size-3=size-1+size-2
    или
    set /a size-3=%size-1%+%size-2%
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:31 13-02-2011 | Исправлено: 01MDM, 17:37 13-02-2011
    lorents



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

    Код:
    @echo off
     
    setlocal enabledelayedexpansion
     
    set Docs="%~dp0Tools\"
    PATH %Docs%;%PATH%
     
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    if %png%==3 call :Non-interlaced_Fast "%%~fi"
    )
     
    :Non-interlaced_Fast
    truepng -i0 -zm9 -zs0 -fe -force "%~f1" -out "%~dpn1-zm9-zs0.png" >nul
    truepng -i0 -zm8 -zs1 -fe -force "%~f1" -out "%~dpn1-zm8-zs1.png" >nul
    for %%a in ("%~dpn1-zm9-zs0.png") do set size-1="%%~za"
    for %%b in ("%~dpn1-zm8-zs1.png") do set size-2="%%~zb"
    set /a "size-3=!size-1!+!size-2!"
    echo !size-3!
    exit /b

    Вот как бы весь код

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 17:41 13-02-2011 | Исправлено: lorents, 17:42 13-02-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    А откуда переменная %png% прилетела? Если из другого батника, который вызывает этот, то попробуй так:

    Код:
     
    @echo off
     
    setlocal
     
    set Docs="%~dp0Tools\"
    PATH %Docs%;%PATH%
     
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    if %png%==3 call :Non-interlaced_Fast "%%~fi"
    )
    goto:eof
     
    :Non-interlaced_Fast
    truepng -i0 -zm9 -zs0 -fe -force %1 -out "%~dpn1-zm9-zs0.png" >nul
    truepng -i0 -zm8 -zs1 -fe -force %1 -out "%~dpn1-zm8-zs1.png" >nul
    for %%a in ("%~dpn1-zm9-zs0.png") do set "size-1=%%~za"
    for %%b in ("%~dpn1-zm8-zs1.png") do set "size-2=%%~zb"
    set /a "size-3=size-1+size-2"
    echo %size-3%
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:52 13-02-2011 | Исправлено: 01MDM, 18:06 13-02-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    упс не заметил, это просто переменная, она задается в тоже bat.  
    Я так тоже пробовал, все равно не хочет работать, выдает:

    Цитата:
    Отсутствующий оператор.
    Режим вывода команд на экран (ECHO) отключен.


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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 18:33 13-02-2011 | Исправлено: lorents, 18:41 13-02-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Тогда измени названия переменных. LOL.  %size_1%, например.
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:00 13-02-2011 | Исправлено: 01MDM, 20:02 13-02-2011
    lorents



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

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 20:31 13-02-2011
    netRunner razor

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, подскажите,
     
    Нужно читать имя ключа в реестре, и получать его значение (не в файл).
     
    Перепробовал кучу выриантов, не помогло.
     
    Буду благодарен!

    Всего записей: 92 | Зарегистр. 15-04-2007 | Отправлено: 11:05 14-02-2011
    BVV63



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

    Цитата:
    Нужно читать имя ключа в реестре

    То бишь имя заведомо неизвестно? Можно поподробнее?.. Где и по каким критериям его искать?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:44 14-02-2011
    res2001



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

    Цитата:
    Нужно читать имя ключа в реестре

    А в for разобрать вывод reg query не судьба?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:57 14-02-2011
    netRunner razor

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    Имя ключа и его местоположение известно, меняется только его значение. Это значение и нужно отслеживать.
     
    Это необходимо для PRTG Network Monitor. Everest пишет значения в реестр, скрипт должен их забирать.

    Всего записей: 92 | Зарегистр. 15-04-2007 | Отправлено: 12:16 14-02-2011
    Misha1989



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

    Через REG QUERY /S можно получить полный список ключей ветки реестра и при нахождении значения обработать нужный ключ, но работает это очень медленно.

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 12:25 14-02-2011
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    netRunner razor
    Так Вам, наверное, не ключ нужен (какое у ключа значение может быть?), а параметр. Тогда "Reg Query" Вам и даст его значение:

    Код:
    Reg Query /?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:34 14-02-2011 | Исправлено: BVV63, 12:35 14-02-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    netRunner razor
    вот тебе пример:
    for /f "skip=4 tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List" /v "445:TCP" ') do echo.%%a

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:42 14-02-2011
    netRunner razor

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В конец запутался...
     
    HKEY_CURRENT_USER\Software\FinalWire\AIDA64\SensorValues\
     
    Имя параметра Label.SCPU2UTI
     
    Нужно выдрать значение параметра...

    Всего записей: 92 | Зарегистр. 15-04-2007 | Отправлено: 12:55 14-02-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    netRunner razor
    for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Software\FinalWire\AIDA64\SensorValues" /v "Label.SCPU2UTI" ') do echo.%%a

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:44 14-02-2011 | Исправлено: res2001, 14:13 14-02-2011
    netRunner razor

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Благодарен, но вывод отсутвует...

    Всего записей: 92 | Зарегистр. 15-04-2007 | Отправлено: 13:59 14-02-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    netRunner razor
    У меня на ВинХР работает.
    Попробуй просто выдать в ком.строке:
    reg query "HKLM\Software\FinalWire\AIDA64\SensorValues" /v "Label.SCPU2UTI"
    Будет то что надо?
     
    Добавлено:
    О, вместо HKCU, написал HKLM. Видимо из-за этого у тебя ничего и не выводит.
    Поправил свой прошлый пост, протесть еще раз.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:08 14-02-2011 | Исправлено: res2001, 14:15 14-02-2011
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru