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

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SetSuspendState.ZIP  538 байт (538 байт)
    перевод компьютера в ждущий режим
    invoke SetSuspendState,FALSE,0,FALSE
    https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa373201%28v=vs.85%29.aspx

    Всего записей: 3412 | Зарегистр. 29-03-2016 | Отправлено: 11:35 07-03-2017 | Исправлено: bomzz, 15:53 07-03-2017
    Dominik545

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, у меня проблема я не могу создать на bat-файлы:
    1. переименовать, по дате создание
    2. дописать префикс, упорядочить по очередности:  
    3. скопировать все файлы из папки №1 перемести в папку №2

    Всего записей: 1 | Зарегистр. 09-03-2017 | Отправлено: 07:53 09-03-2017
    Richard_Nixon



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

    Всего записей: 89 | Зарегистр. 22-02-2017 | Отправлено: 14:36 09-03-2017 | Исправлено: Richard_Nixon, 04:12 10-03-2017
    sundraw

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Win XP SP3. Возникла задача периодически проверять прокси на работоспособность.  Но так как прокси постоянно меняются, каждый раз подставлять нужный адрес после пинга весьма затруднительно. К примеру, на скрине комп подключён через прокси-сервер

    Как с помощью батника можно пинговать прокси-сервер, подставляя в пинг текущий прокси, значения которого могут быть совершенно разные. Если прокси нерабочий, то выполняется программа prg.bat, сигнализирующая о неисправном прокси.

    Всего записей: 829 | Зарегистр. 15-05-2011 | Отправлено: 16:52 09-03-2017 | Исправлено: sundraw, 16:54 09-03-2017
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sundraw
    proxyping.cmd
    Код:
    for /f "tokens=2 delims=:" %%A in ('proxycfg -u ^|find /i "Proxy Server(s)"') do set CUR_PROXY=%%A
    ping -n 10 %CUR_PROXY% |find /i "TTL" || call prg.bat
    exit

    Где-то так...
    Единственно что, для русской XP вместо "Proxy Server(s)" нужно использовать "Прокси-сервер:". Т.е. решение не является независимым от локализации.
    И ещё одно замечание: отсутствие pong от прокси-сервера отнюдь не всегда означает его неработоспособность: пинги могут быть "зарезаны" провайдером, а могут и настройками самого прокси...

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 22:39 09-03-2017
    sundraw

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

    Цитата:
    И ещё одно замечание: отсутствие pong от прокси-сервера отнюдь не всегда означает его неработоспособность: пинги могут быть "зарезаны" провайдером, а могут и настройками самого прокси...

    Да, действительно, только у меня наоборот: "нерабочие" прокси пингуются нормально, а в сеть не пускают. Буду искать решение.
     

    Всего записей: 829 | Зарегистр. 15-05-2011 | Отправлено: 00:00 10-03-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sundraw
    В командной строке задавать прокси для WGet и пробовать через них скачать что-то небольшое, например http://v4.ident.me, а потом анализировать ERRORLEVEL

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 00:41 10-03-2017
    Jek500

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Уважаемые, как сделать батник меняющий значения в реестре?
    вот
     
    и вот
     
    хочется запускать батник на машине и значения прописывались автоматом.

    Всего записей: 538 | Зарегистр. 05-12-2006 | Отправлено: 03:34 10-03-2017
    Richard_Nixon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Комрады, нужен хитрый батник. Хотя бы шепните что такая возможность существует и я поверю в чудо.
     
  • есть пять каталогов содержащих xlsx файл c одноименным названием своего каталога (например: folderZ\ folderZ.xlsx)
  • батник, запускаемый планировщиком, должен отслеживать изменения в файлах каталогов и в случае если файл изменялся,
    создавать в отдельном каталоге текстовый файл, имя которого "имя_каталога_ДД_ММ_ГГ_ЧЧ-ММ-СС.txt" , либо записывать время изменения файла в один текстовый файл. Таких изменений за сутки может быть  порядка 20ти,  
    а запись представлена сл. образом:
     

    Цитата:
    folder1_23_02_17_14-56-59
    folder4_23_02_17_15-01-03
    .........
     

     

  • Всего записей: 89 | Зарегистр. 22-02-2017 | Отправлено: 04:32 10-03-2017 | Исправлено: Richard_Nixon, 05:11 10-03-2017
    sundraw

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

    Цитата:
    sundraw
    В командной строке задавать прокси для WGet и пробовать через них скачать что-то небольшое, например http://v4.ident.me, а потом анализировать ERRORLEVEL

    Через скачивание уже теряет смысл. У меня сейчас срабатывает по окну программы, дающей сбой. Думал, через пинг прокси будет проще, оказалось нет.
     
     
    Добавлено:
    Jek500

    Цитата:
    Здравствуйте. Уважаемые, как сделать батник меняющий значения в реестре?  

    Наверное, как-то так

    Код:
     
    @echo off
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders" /v SecurityProviders /t REG_SZ /d "credssp.dll" /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v Security_Packages /t REG_MULTI_SZ /d "tspkg" /f
     

    Если к уже существующим значениям  что-то дописывать ("credssp.dll", "tspkg"), то в тех же кавычках попробуйте добавлять через пробел. Перед правкой реестра не забудьте сохранить или запомнить первоначальные значения.

    Всего записей: 829 | Зарегистр. 15-05-2011 | Отправлено: 06:22 10-03-2017 | Исправлено: sundraw, 07:32 10-03-2017
    YuS_2



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

    Цитата:
    Комрады, нужен хитрый батник. Хотя бы шепните что такая возможность существует и я поверю в чудо.

    Изучите ROBOCOPY, он умеет следить за каталогами, вести журнал и многое другое...
    Это ли не чудо?!

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:41 10-03-2017
    ipmanyak



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

    Цитата:
    создавать в отдельном каталоге текстовый файл, имя которого "имя_каталога_ДД_ММ_ГГ_ЧЧ-ММ-СС.txt"
    это просто

    Цитата:
    записывать время изменения файла в один текстовый файл.
    тоже нет никаких проблем, еще проще.
    Самое главное и сложное,   и о чем вы не сказали, по какому признаку вы будете отслеживать , что файл был изменен?
     
    YuS_2 Ему не надо копировать сами файлы, потому robocopy имхо пока не при делах.
     
     


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

    Всего записей: 11719 | Зарегистр. 10-12-2003 | Отправлено: 07:56 10-03-2017 | Исправлено: ipmanyak, 07:57 10-03-2017
    Jek500

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

    Цитата:
    Если к уже существующим значениям  что-то дописывать ("credssp.dll", "tspkg"), то в тех же кавычках попробуйте добавлять через пробел. Перед правкой реестра не забудьте сохранить или запомнить первоначальные значения.

    немного не понял этого.
    Да, там в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders уже есть пункт SecurityProviders (REG_SZ) в котором прописаны значения.Вот туда и надо дописать- credssp.dll
    так же во второй ветке:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa есть пункт Security Packages(REG_MULTI_SZ) куда и надо добавить к уже имеющемуся строку - tspkg.
     
    выше указанные команды не сработали.Просто открылось окно CMD пустое и стоит

    Всего записей: 538 | Зарегистр. 05-12-2006 | Отправлено: 08:46 10-03-2017
    sundraw

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jek500
    Надеюсь, как создавать батник, знаете. Напомню. В текстовый файл копируете указанный код. Если Вы хотите видеть происходящее, вместо @echo off включите @echo on, и в конце кода поставьте pause. Переименовываете текстовый файл в bat-файл, например, в Reg.bat.  

    Цитата:
    немного не понял этого.
    Да, там в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders уже есть пункт SecurityProviders (REG_SZ) в котором прописаны значения.Вот туда и надо дописать- credssp.dll
    так же во второй ветке:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa есть пункт Security Packages(REG_MULTI_SZ) куда и надо добавить к уже имеющемуся строку - tspkg.  

    Точно так. Получится такой батник

    Код:
     
    @echo on
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders" /v SecurityProviders /t REG_SZ /d "чтотоуженаписанное credssp.dll" /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v Security_Packages /t REG_MULTI_SZ /d "чтотоуженаписанное tspkg" /f
    pause  
     

     
    Вместо "чтотоуженаписанное" обязательно внесите параметры, которые уже есть, потому что скрипт удаляет весь параметр, и вписывает то, что находится в кавычках.
    Убедились, что ошибок нет, убираете pause. Если после отработки (без pause) окно CMD не будет закрываться, допишите строку exit. Если нужен старт батника с пуском системы, внесите его (его ярлык) в автозагрузку. В общем, поэкспериментируйте, предварительно сохранившись.
     
    P.S. Можете сделать по-другому, через reg-файл, это понадёжнее. Выбираете нужную ветку, сохраняете её через "Экспорт", получаете file.reg Сохраняете его под другим именем, находите в нём нужный параметр и дописываете, что Вам нужно. Затем просто нажимаете на файл и он вносит исправленное в реестр. Если Вы не хотите видеть уведомления реестра, то в ветке HKEY_CLASSES_ROOT\regfile\shell\open\command измените "Параметр по умолчанию" на regedit.exe /s "%1"

    Всего записей: 829 | Зарегистр. 15-05-2011 | Отправлено: 09:16 10-03-2017 | Исправлено: sundraw, 10:21 10-03-2017
    djshkiper



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте. Подскажите, товарищи, как при помощи батника организовать копирование файлов по маске из одной папки в другую. Я нашёл только способ копирования с заменой существующих.
     
    Это выглядит примерно так:
    copy *.rar C:\111\ /y
     
    А как сделать так, чтобы файлы, которые уже существуют в конечной папке, не копировались с перезаписью повторно из исходной, а оставались нетронутыми?
     
    P.S. Синтаксис copy, xcopy и robocopy прочитал, но подобного ключа не нашёл. Гугл подсказал, что такое очень легко реализуется на Линуксе, но примера для винды не нашёл.

    Всего записей: 5069 | Зарегистр. 20-04-2009 | Отправлено: 09:28 10-03-2017
    VitaminP



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

    Цитата:
    как сделать так, чтобы файлы, которые уже существуют в конечной папке, не копировались с перезаписью

    Можно выполнять копирование командой "COPY", но в цикле "FOR" с учётом проверки наличия файла командой "EXIST".

    Всего записей: 306 | Зарегистр. 28-08-2013 | Отправлено: 10:04 10-03-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    djshkiper
    Цитата:
    не копировались с перезаписью повторно из исходной, а оставались нетронутыми?
    Если вам надо создать зеркало - robocopy /mir (что то же самое, что и robocopy /e /purge). Он будет копировать файлы, которые отличаются, даже если время не совпадает в любую из сторон. Для исключения есть ключи /x...
     
    Добавлено:
    sundraw
    Цитата:
    Через скачивание уже теряет смысл
    И почему же теряет смысл? По указанной мной ссылке возвращается только текущий адрес IPv4 в обычном текстовом формате - максимум 15 байт. А окон при ошибке никаких не выскакивает, wget устанавливает ненулевой errorlevel

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 10:10 10-03-2017
    djshkiper



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    VitaminP
    Pasha_ZZZ
     
    Спасибо за ответы. Остановился на варианте /mir

    Всего записей: 5069 | Зарегистр. 20-04-2009 | Отправлено: 10:57 10-03-2017
    Richard_Nixon



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

    Цитата:
    Самое главное и сложное,   и о чем вы не сказали, по какому признаку вы будете отслеживать , что файл был изменен?

    Да. Вот же:

    Цитата:
    ...должен отслеживать изменения в файлах каталогов и в случае если файл изменялся,
    создавать в отдельном каталоге текстовый файл, имя которого "имя_каталога_ДД_ММ_ГГ_ЧЧ-ММ-СС.txt" , либо записывать время изменения файла в один текстовый файл. Таких изменений за сутки может быть  порядка 20ти,  
    а запись представлена сл. образом:  
    folder1_23_02_17_14-56-59
    folder4_23_02_17_15-01-03

    В принципе если ROBOCOPY сможет создавать отчет об изменении файла X в каталоге Y, это будет подходящий вариант. Вообще, главное чтобы на событие изменения файла, создался/скопировался любой файл, а уж потом, другим батником, можно переименовать его по дате и времени создания, что и требуется условием.Что robocopy умеет делать, так это отслеживать изменения.

    Всего записей: 89 | Зарегистр. 22-02-2017 | Отправлено: 11:53 10-03-2017 | Исправлено: Richard_Nixon, 12:14 10-03-2017
    djshkiper



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Поторопился я немного с robocopy /mir
     
    Она создаёт зеркало. Но дело в том, что файлы в источнике постоянно меняются, а в папке назначения - накапливаются. по принципу бекапа. То есть если будет создаваться зеркало, то старые файлы будут удаляться, чего хочется избежать.
     
    Может можно другим ключом организовать копирование? В циклах, к сожалению, не силён, чтобы каждый из файлов перебирать и сравнивать.

    Всего записей: 5069 | Зарегистр. 20-04-2009 | Отправлено: 12:39 10-03-2017
       

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