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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Norhard Читать файл в батнике уже непростая задача, хотя и решаемая. А читать данные из запущенного батника это вообще не знаю , реализуемо ли. Лучше дату хранить в другом файле. Подход к задаче не совсем корректный.  
     
    Читать из файла  
    FOR /F "delims== tokens=1,2" %%I IN (test.ini) DO SET %%I=%%J  
    echo %SoftInfo%  
     
    Замена текста в файле (sbs2.com) [?]  - подрихтуешь как надо
    http://forum.ru-board.com/topic.cgi?forum=2&topic=2922&start=16&limit=1
     


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 12:29 01-03-2016 | Исправлено: ipmanyak, 12:31 01-03-2016
    Norhard



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ipmanyak
    Сделал тестовый:

    Код:
    @echo off
    set datetemp=%date:~-10%
    set data=02.03.2016
    if %datetemp% == %data% (goto :kay) ELSE ( goto :kddd )
    :kay
    echo Выполнено
    pause
    exit
    :kddd
    echo Нет
    pause
    exit

     
    Вроде работает.
     
    Спасибо за наводку! По батникам у меня опыта нет.

    Всего записей: 64 | Зарегистр. 04-02-2013 | Отправлено: 14:01 01-03-2016 | Исправлено: Norhard, 14:04 01-03-2016
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Norhard Имей ввиду, формат даты зависит от региональных настроек винды, если настройка будет другая, формат даты будет другой и батник не будет работать как надо.


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 15:47 01-03-2016
    H48as



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

    Всего записей: 17 | Зарегистр. 18-02-2016 | Отправлено: 17:18 01-03-2016
    Norhard



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ipmanyak Как то не подумал об этом. Учту, спасибо.  
    Дата в моем файле-однодневке все равно будет редактироваться перед каждым применением. Если что, подправить не составит труда.

    Всего записей: 64 | Зарегистр. 04-02-2013 | Отправлено: 18:23 01-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я дико извиняюсь... давно затрагивалась тема реестр через WIMC
     
    В Сети глухо с инфой. Может кто подкинет образец-другой?
    .

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 18:34 01-03-2016
    bifido76



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    imsorry
    В конце статьи приводится пример работы с реестром через класс StdRegProv  
    http://www.robvanderwoude.com/wmic.php
    А здесь все методы данного класса -  
    https://msdn.microsoft.com/en-us/library/windows/desktop/aa393664%28v=vs.85%29.aspx

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 22:22 01-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bifido76
    * В конце статьи приводится пример работы с реестром через класс StdRegProv
    О! Спасибо! Я эту ссыль уже несколько раз обхаживал, но все по "WIMC REG"
    Зевнул именно нужное...
     
    А почему WIMC REGISTRY не практикуется совсем?
    .
     
     
    Добавлено:
    Заработало вот так:
     

    Код:
    WMIC %sNamSpc% Call GetStringValue hDefKey=%HKCU% sSubKeyName=%sKey% sValueName="StrVal"

     
    Выдает:
     

    Код:
    >wimc.bat
    Executing (StdRegProv)->GetStringValue()
    Method execution successful.
    Out Parameters:
    instance of __PARAMETERS
    {
            ReturnValue = 0;
            sValue = "Text Text";
    };

     
    Но как обратиться к sValue?
     
    Я пытался передавать ее, в командной строке, но он ругается:  
    sValue - Not a input parameter.
    .
     
     

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 22:49 01-03-2016
    bifido76



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    imsorry
    А там автор статьи и пишет почему - "Можно использовать WMIC для того, чтобы читать, записывать и удалять ключи и значения в реестре, но я не рекомендую это делать, так как это занятие не для слабонервных. REG.EXE использовать намного легче."

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 23:31 01-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bifido76
    Дык, я это тоже прочитал :) Поэтому, честно говоря, отчаялся там найти что-то полезное. Тем более, что ключевое слово выбрал неверно...
     
    Я с удовольствием бы использовал Reg или любую другую консольку,  
    но ни одна из них не работает с экспортирует выборочнымие values.  
    Ближайший приемлемый вариант - парсить выдачу Reg через For :(((
    .

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 23:37 01-03-2016 | Исправлено: imsorry, 23:59 01-03-2016
    bifido76



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    imsorry
    Ну, так и здесь похоже тоже надо парсить.

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 23:51 01-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bifido76
    Епт...  
    т.е. думаешь, что эту sValue по-человечески не вытащить?

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 23:56 01-03-2016
    bifido76



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

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 00:00 02-03-2016 | Исправлено: bifido76, 00:05 02-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я когда прочитал описалово по второй твоей ссылке, так наоборот обрадовался - что передашь в нее переменную, а она сама ее и заполнит...
     
    Добавлено:

    Код:
    uint32 GetStringValue(
      [in]  uint32 hDefKey = HKEY_LOCAL_MACHINE,
      [in]  string sSubKeyName,
      [in]  string sValueName,
      [out] string sValue
    );

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 00:03 02-03-2016
    bifido76



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    imsorry
    Всегда, когда работал с WMIC приходилось парсить выдачу. Никогда по-человечески не получалось. Подожди попробую проэкспериментировать.

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 00:08 02-03-2016
    imsorry

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

    Цитата:
    Подожди попробую проэкспериментировать.

    Спасибо! Я-то щаз в оффлайн... голова ужЕ одурела.
     
    Я уже и так и эдак изгалялся. И объявлял пустую, и подставлял с % и с !. Кстати, WMIC ее видит только с !. И имя ей менял. Банан...
    .
     
    Добавлено:
    На языке-то они так и делают:

    Код:
    oReg.GetStringValue HKEY_LOCAL_MACHINE, strFullKeyPath, strValueName, szValue

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 00:14 02-03-2016
    bifido76



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    imsorry
    И то и другое нужно парсить. Другого пути не нашел. А проще в данном случае парсить  reg query -
    Код:
    set "sKey=HCKU\и.т.д"
    for /f  "tokens=3 delims= " %%a in ('reg query "%sKey%" /v "StrVal"') do if not defined val set val=%%a
    echo "%val%"

    Всего записей: 769 | Зарегистр. 28-09-2015 | Отправлено: 00:45 02-03-2016 | Исправлено: bifido76, 01:35 02-03-2016
    imsorry

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bifido76
    Что ж... сказано "парсить!", значит будем парсить...
    Спасибо за помощь, а то бы я весь загуглился и время потерял в надежде передать ее.
     
    Конечно, я тогда вернусь к Reg. Хотя...
     
    ... есть у меня одна левая консолька
    rrc.exe getValue hkcu\KeyName\\ValueName /noComments /noCopyright
     
    Выдает
    Text Text
     
    Но так хотелось обойтись встроенными средствами...
    .
     

    Всего записей: 148 | Зарегистр. 25-09-2013 | Отправлено: 03:32 02-03-2016
    dstormclone

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    доброго времени  
    нужно искать и  удалять спецпапки со всем содержимым
    папки которую следует удалять ДОЛЖНЫ соответствовать определенным требованиям, а именно: должна быть выполнена определенная вложенность папок
    задачу собственно почти добил, батник:
     
    for /F %%i in ('dir c:\ /A:D /B /S ^| find "tester\info\go"') do rmdir /s /q %%i
     
    однако если например папка содержит пробелы, например такое вложение
    с:\папка с пробелами\tester\info\go -то соответственно ничего не удаляется
    с:\папкаБЕЗпробелов\tester\info\go -все прекрасно работает
     
    укажите пожалуйста где неточность в батнике
     
    ---------------------------------------------
    upd все спасибо вопрос вроде бы добил
     
    for /F "delims=" %%i in ('dir c:\ /A:D /B /S ^| find "tester\info\go"') do rmdir /s /q "%%i"

    Всего записей: 31 | Зарегистр. 22-10-2014 | Отправлено: 17:04 02-03-2016 | Исправлено: dstormclone, 09:16 03-03-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dstormclone в конце %%i попробовать заменить на "%%~i" или "%%~fi"

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 18:14 02-03-2016
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru