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

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



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

    Цитата:
    а если ошибешся, запутаешся, зачем усложнять систему?.. ; имхо, не рационально ; в математике проверяют : чем решение проще, тем "лучше" , правильнее ...

    Специфика работы скриптов. Они по ночам выполняются на серверах и в конце выполнения "должны решить", то ли произошедшие ошибки неважны, и логи подождут своего просмотра, то ли "поднимать тревогу" и оповещать админов (дабы когда те придут, то сразу б увидели).

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:07 01-07-2010
    mugil_cephalus

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

    Код:
    set var
    echo\%var%
    pause

    листинг
    G:\>set var
    Переменная среды var не определена
     
    G:\>echo\
     
     
    G:\>pause
    Для продолжения нажмите любую клавишу . . .

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:13 01-07-2010
    res2001



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

    Цитата:
    до мурманска дошло московское пекло ?...

    фиг там, дождь у нас второй день не переставая, +10

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:56 01-07-2010
    BVV63



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

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:52 01-07-2010 | Исправлено: BVV63, 11:53 01-07-2010
    res2001



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

    Цитата:
    Подскажите, пожалуйста, возможно ли осуществить перенаправление вывода программы напрямую в переменную? Нигде никаких данных не нашёл, мои эксперименты успехом не увенчались, но решил на всякий случай спросить у знатоков.

    for /f "tokens=*" %%a in ('app.exe') do echo %%a
    В %%a будет вывод команды, обрабатываться будет каждая строчка вывода отдельно.
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:14 01-07-2010
    us0r



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

    Код:
    echo 1- Первый вариант закачки
    echo 2- Второй вариант закачки

    echo лишь выводит то, что ты хочешь написать на экране в консоли (если по простому)...
    Так что подставляй после echo всё что хочешь- всё будет написано

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 14:37 01-07-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кому интересно
    RUNDLL132.rar, скачал отсюда, и самое главное комменты на русском языке
     

    Цитата:
    ::Отобразить диалог Диспетчер устройств
    rundll32.exe devmgr.dll DeviceManager_Execute
     
    ::Вызвать диалог XviD Configuration
    rundll32.exe xvidvfw.dll Configure
     
    ::Открыть данную папку
    rundll32.exe url.dll FileProtocolHandler C:\Windows
     
    ::Открыть ярлык интернет либо указанный IP-адрес.
    rundll32.exe url.dll OpenURL "http://www.google.ru/"
     
    ::Вызвать мастер создания ярлыка для указанного файла.  
    rundll32 appwiz.cpl, NewLinkHere %~dp0
     
    ::Отключить механизм восстановления системы на всех дисках.  
    rundll32.exe SRCORE.dll SysprepGeneralize
     
    ::Удаляет указанный файл либо весь каталог.  
    rundll32.exe ADVPACK.dll DelNodeRunDLL32 C:\file.cmd
     
    ::Установить курсор в правый нижний угол экрана.  
    rundll32.exe user32.dll SetCursorPos
     
    ::Отобразить контекстное меню.
    rundll32.exe user32.dll mouse_event

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 14:53 01-07-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True - принудительно обновить все параметры раздела реестра HKCU для текущего пользователя. Например, если вы поменяли путь к заставке или обоям и нужно применить изменения сразу, без перезапуска сеанса.
     

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:02 01-07-2010
    res2001



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

    Цитата:
    Может кому интересно

    Сенкс!

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:14 01-07-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    зараза - реально не работает
     
    вбс срипт который включает и отключает видимость зарегистрированных расширений. а вот как обновить експлорер без его перезагрузки все не могу найти
     
    Set WshShell = CreateObject("WScript.Shell")
    If WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt") = "0" Then
    WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt","00000001","REG_DWORD"
    Else
    WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt","00000000","REG_DWORD"
    End If

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:18 01-07-2010 | Исправлено: bomzzz, 15:20 01-07-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Да, эта тема этим параметром исписана достаточно, я поэтому и стал искать.
     
    Оказывается вот ещё есть в этой же теме.
     
    DLL Export Viewer этой утилиткой можно найти функцию по всем системным dll или отобразить сразу все функции.
     
    Для обновления вот эта функция работает
    Цитата:
    DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
    осталось понять как её вызвать через RUNDLL32

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 15:19 01-07-2010 | Исправлено: AZJIO, 16:03 01-07-2010
    jek1976



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

    Цитата:
    Тебе надо всё что вновь было создано дублировать на, скажем, диск D:\ и после чего килять всё на диске C:\. Ну а если сервак доступен- тогда всё на сервак засасывать, а потом килять?

    Не совсем так...
    Если можно как-то надежно определить, что профиль УЖЕ БЫЛ синхронизирован, то зачем его дублировать на другом диске или серваке? В топку его и все! Или я чего-то не догоняю...
     
     

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 16:10 01-07-2010 | Исправлено: jek1976, 16:13 01-07-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Тебе надо настройки профиля сохранять или ещё и пользовательскую инфу?
    Просто профиль легче синхронизировать локально (на диск D- сервак же не всегда доступен...
    А потом, при доступности сервака- сливать на сервак, если надо... и килять его локально...

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 16:17 01-07-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:18 01-07-2010 | Исправлено: bomzzz, 16:18 01-07-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Начало стандартное: rundll32.exe shel32.dll, SHChangeNotify
    А дальше как карта (система?) ляжет...
    Может: rundll32.exe shel32.dll, SHChangeNotify %param01% %param02% ... %paramX%

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 16:21 01-07-2010
    jek1976



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

    Цитата:
    Просто профиль легче синхронизировать локально (на диск D- сервак же не всегда доступен...
    А потом, при доступности сервака- сливать на сервак, если надо... и килять его локально...
     

    Да ведь весь сыр-бор пошел из-за недостатка дискового места на рабочих машинах!!! Сохранять копию профиля на диске иногда будет просто НЕКУДА!
     
    Мне видится работа так:
    1) при запуске(!) операционки, скрипт (батник) берет первый профиль в папке Documents and Settings (исключая All Users, Default и системные) и проверяет в этом профиле факт его последней успешной синхронизации с сервером;
    2) если профиль был успешно синхронизирован - то его удаляем, а в противном случае - оставляем до следующей перезагрузки, в надежде на то, что сервер при следующем включении будет доступен и этот профиль синхронизируется сам;
    3) переходим к следующему профилю в папке Documents and Settings и повторяем пункт 1.
     
    Добавлено:
    Утилита mobsync.exe здесь может помочь?

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 16:30 01-07-2010 | Исправлено: jek1976, 16:34 01-07-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Теоретически. Добавь нужной папке разрешение работать автономно- прога должна будет её увидеть и обрабатывать...
    А всё же- тебе надо копировать всю пользовательскую инфу, или только настройки профиля?

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 16:36 01-07-2010
    jek1976



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

    Цитата:
    Добавь нужной папке разрешение работать автономно- прога должна будет её увидеть и обрабатывать...

    Это предполагается делать вручную с каждой папкой?
     
     

    Цитата:
    А всё же- тебе надо копировать всю пользовательскую инфу, или только настройки профиля?

    Да желательно всё - и инфу и настройки. Но это же должна делать сама винда, нам до этого - не должно быть никакого дела. Наша задача - определить, был ли профиль успешно синхронизирован!!!
     
     

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 16:40 01-07-2010
    VV2006

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Решил сделать 7z екзешник-самораспак для настроенной под себя Opera.
    Если использовать запуск "чиста канкретна" Opera.exe после распаковки в темп, то  всё отрабатывает нормально, после выхода из Opera её каталог в темпе успешно удаляется.
    Загвоздка возникает, когда пробую запустить её батником, понижающим привелегии пользователя.
    Пришлось городить два батника:  

    Код:
    START "Opera 10.54" /WAIT %~dp0drop.cmd&EXIT  


    Код:
    drop.exe opera.exe -U

    Проблема: как сделать, чтобы после выхода из Opera не приходилось закрывать окошко первого батника?

    Всего записей: 2159 | Зарегистр. 10-02-2006 | Отправлено: 16:54 01-07-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Sad, but true...
    На самом деле делаешь это с папкой самого юзера (вложеные папки раскуривать будет прога)...
    И если mobsync всёже будет работать- то она всё проверит сама...
     
    О! Есть такая фигня в винде, как портфель... Честно- сам не юзал... Но вроде бы он отвечает за синхронизацию...
    Ковырну его в ближайшее время...
     
    VV2006
    1) Что такое drop.exe?
    2)
    Код:
    setlocal
    set param1=opera.exe
    set param2=-u
    START "OPERA 10.54" /wait drop.exe %param1% %param2%

    или

    Код:
    START "OPERA 10.54" /wait drop.exe opera -u

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 17:09 01-07-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