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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    rbcl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, как в цикл
    for /f "tokens=*" %%a in (oracle_services.tmp) do net stop "%%a"
    встроить %errorlevel% для проверки правильности остановки служб. Никак опять не соображу.

    Всего записей: 22 | Зарегистр. 02-11-2005 | Отправлено: 04:20 04-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rbcl
    ... do (net stop "%%a" || echo Stop "%%a" - Error)
     
    P.S. Ты вроде как собирался синтаксис учить пару-тройку страниц назад и я тебе ссылку на уроки бат-аники давал? Там про вот это "||" написано...

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 05:22 04-02-2007
    ViSiToR



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

    Цитата:
    Вот что получилось:

    Неплохо получилось  (в шапку даже тянет).
     
    В связи с этим есть вопрос ко всем, а возможно ли батником просто вызывать имитацию нажатия клавиш? тогда можно было бы просто проходиться по всем окнам и нажимать в них F5  

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 06:14 04-02-2007
    Elroir



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

    Цитата:
    Неплохо получилось  

    Спасибо - обновил шапку

    Цитата:
    возможно ли батником просто вызывать имитацию нажатия клавиш?

    IMHO - вряд ли. Тут нужны утилиты, работающие с Win API, вроде того же AutoIt.
    Правда я не знаю насчет VBScript...

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:52 04-02-2007
    rbcl

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

    Цитата:
     
    rbcl  
    ... do (net stop "%%a" || echo Stop "%%a" - Error)  
     
    P.S. Ты вроде как собирался синтаксис учить пару-тройку страниц назад и я тебе ссылку на уроки бат-аники давал?  Там про вот это "||" написано...
     

    Спасибо, про || даже не подумал и ещё зачем мы объединяем в скобках- так не работает.
    ПЫСЫ:
    Ссылку на уроки читал- спасибо. Но головы у вас явно светлей чем моя, поэтому не судите.

    Всего записей: 22 | Зарегистр. 02-11-2005 | Отправлено: 15:48 04-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rbcl
    Почему в скобках не работает? Только-что написал несколько сервисов в столбик в serv.txt и запустил:

    Код:

    @echo off
    for /f "tokens=*" %%a in (serv.txt) do (net stop "%%a">nul 2>&1 || echo Stop "%%a" - Error)

    Все сработало, какие смог остановить - остановил молча без разговоров и вывода на экран, какие не смог(не запущен или не существует) - вывел ошибку
    ViSiToR

    Цитата:
    тогда можно было бы просто проходиться по всем окнам и нажимать в них F5

    VBS легко нажмет F5, только перед этим нужно будет активировать окно и вставить маленькую, хоть полсекунды задержку. Непрактично получится, если окон много - то долго, и может ненароком какое другое окошко выскочить левое, F5 ему будет послан. А если для переключения показа расширения файлов или показывать-не показывать скрытые файлы, то легче воспользоваться FileExtToggle и похожими приблудами, в этом топике на msfn расширений для правого клика к Explorer-у воз и маленькая тележка. Все сразу только не ставьте, одно-два действительно Вам нужных, бо эксплорер может начать глючить, он это любит

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:56 04-02-2007 | Исправлено: igor_andreev, 17:13 04-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev и All
    Если будет время, посмотрите пожалуйста, можно ли как-то вызвать функцию SendMessage из user32.dll, с параметром WM_SETTINGCHANGE. Это как раз то, что говорит всем открытым окнам обновить системные установки. Может можно запустить это через rundll32.exe или с помощью VBScript?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:19 04-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Я не знаю, как вызвать WM_SETTINGCHANGE Для батника через user32.dll предлагаются только ExitWindowsEx, LockWorkStation и UpdatePerUserSystemParameters. Для Vbscript примеров c SystemParametersInfo и SendMessage тоже не видел, на microsoft есть только для С(или какой там это язык, не разбираюсь)

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 19:54 04-02-2007
    ViSiToR



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

    Цитата:
    если для переключения показа расширения файлов или показывать-не показывать скрытые файлы, то легче воспользоваться FileExtToggle и похожими приблудами, в этом топике

    Да не, для этой затеи я удачно накалякал себе подобные две утилиты гна AutoIt (кстати, получилось даже лучше чем эти расширения, у меня вообще ничего не нужно обновлять).
     
    Мне просто было интересно, возможно ли это на батниках.
     
    Добавлено:
    Elroir

    Цитата:
    вызвать функцию SendMessage из user32.dll, с параметром WM_SETTINGCHANGE

    А откуда инфа? (где то я уже об этом слышал/видел...)

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:05 05-02-2007
    Elroir



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

    Цитата:
    А откуда инфа?

    Из леса Гугла вестимо . А также из MSDN и www.msfn.org.
    Когда в Group Policy что-нибудь меняешь, изменения срабатывают сразу, как только нажмешь ОК или Apply. Вот я и начал искать, какая функция при этом вызывается. Вот так и вышел на message WM_SETTINGCHANGE. А потом уже нашел, что его надо посылать функциями SendMessage или SendMessageTimeout, которые находятся в user32.dll.

    Цитата:
    получилось даже лучше чем эти расширения, у меня вообще ничего не нужно обновлять

    То есть как не надо обновлять? А как изменения вступают в силу?
     
    igor_andreev

    Цитата:
    Для Vbscript примеров c SystemParametersInfo и SendMessage тоже не видел

    Вот и я не нашел . А UpdatePerUserSystemParameters у меня почему-то не срабатывает.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:25 05-02-2007
    igor_andreev

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

    Цитата:
    (где то я уже об этом слышал/видел...)

    Ну раз AutoIt пользуешься, то где-то в ридми и видел наверное. Там какая-то функция DLLCall есть, вроде можно WM_SETTINGCHANGE окну послать, типа вот. А я ни разу AutoIt не юзал
    Elroir

    Цитата:
    А UpdatePerUserSystemParameters у меня почему-то не срабатывает.  

    Да она срабатывает, но как-то однобоко. Вот попробуй например обоину на рабочем столе сменить без всяких посторонних софтин. Любое_имя.vbs и вместо D:\test.bmp свою картинку напиши в формате BMP.

    Код:

    Set WshShell = WScript.CreateObject("Wscript.Shell")
    WshShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", "D:\test.bmp"
    WshShell.Run "RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 0, False
    WScript.Quit

    Щелкни два раза по такому файлику VBS. Занесли данные в реестр и тут-же рабочий стол обновился как миленький, а вот в папках не хочет чего-то.
     
     
     
    Добавлено:
    Хотя да, тут же про батники тема. Вот для XP пример смены обоины батником без сторонних прог.

    Код:

    @ECHO OFF
     
    REG ADD "HKCU\Control Panel\Desktop" /V "Wallpaper" /T REG_SZ /F /D "D:\TEST.BMP"
    RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters


    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 03:11 05-02-2007
    Elroir



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

    Цитата:
    Вот для XP пример смены обоины батником  

    Это у меня работает
    А вот все, чего я добился играя с WM_SETTINGCHANGE - это то, что у меня сбросились все настройки в Folder View

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:52 05-02-2007
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 06:05 05-02-2007 | Исправлено: Nagual, 06:12 05-02-2007
    Nekt

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как вырубать комп ? RunDll32.exe SHELL32.DLL,SHExitWindowsEx 2
    RunDll32.EXE USER.EXE,ExitWindowsExec не идут пишут типа нету токаго параметра... Если моно подброюный хелп команд rundll а то в шапке что-то не понятное.

    Всего записей: 640 | Зарегистр. 24-01-2006 | Отправлено: 06:16 05-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    В шапке ''Задачи на bat-файлах (часть 1 [?])", делаешь версию первой части для печати и по слову "ftp" несколько простейших примеров найдешь.
    Nekt
    Ты не написал, какая у тебя Windows. Если XP/2003, то в комстроке набери shutdown /?
    А в описании команд rundll32 по ссылке из шапки, кроме всего прочего, около каждой команды написано "Works on:" и бледным шрифтом отмечены версии OS, на которых эта команда НЕ работает.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 06:52 05-02-2007
    Nekt

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

    Всего записей: 640 | Зарегистр. 24-01-2006 | Отправлено: 11:07 05-02-2007
    Elroir



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

    Цитата:
    RunDll32.exe SHELL32.DLL,SHExitWindowsEx 2  
    RunDll32.EXE USER.EXE,ExitWindowsExec  

    Эти команды в WinXP не работают. Microsoft рекомендует использовать утилиту shutdown.exe. Можешь воспользоваться утилитой, которую написал ViSiToR (в шапке Утилиты выключения и перезапуска компьютера)

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:01 05-02-2007
    StanislavG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Большое спосибо если бы я находился где то радом с тобой обязательно пришел поблагодарил

    Всего записей: 34 | Зарегистр. 10-01-2007 | Отправлено: 15:25 05-02-2007
    ViSiToR



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

    Цитата:
    А как изменения вступают в силу?

    Вызывается окно свойства папки, затем переходит на таб Вид, и нажимается ОК, далее скрипт пробегает по всем окнам експлорера (это я недавно сделал), и нажимает в них F5   , потом сворачивает все окна и нажимает F5 на рабочем столе, далее возвращает все окна как было (в тот момент когда был запущен скрипт).
     
    Кстати, подобное и на батнике можно сотворить - запускаем свойства папки (через RunDll32.exe shell32.dll,Options_RunDLL 0), VBS'ом перекидываем вкладку и нажимаем ОК, далее пробегаем по всем открытым окнам и также VBS'ом жмём в них F5    - получится сделать? (правда батником будет дольше - на AutoIt, при открытых 5-ти окнах, это занимат около 3-ёх - 4ёх секунд).
     
    igor_andreev

    Цитата:
    вроде можно WM_SETTINGCHANGE окну послать, типа вот

    Пробовал, но это не действует, там пример для обновления кеша (для иконок), а тут нужно обновить общие настройки... будем искать.


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:29 05-02-2007
    miheenko



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    перенес в другой раздел

    Всего записей: 11 | Зарегистр. 29-01-2007 | Отправлено: 10:37 07-02-2007 | Исправлено: miheenko, 11:23 07-02-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru