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

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



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Что то не пойму что он делает.
    Запускается и сразу закрывается.
    Ну если поставить pause, то висит на паузе. соответсвенно
    Убрал @echo off, вижу что обрабатывается строка for /f "tokens=1*" %%a in ('cscript //nologo //H:cscript //e:jscript "%~f0"') do echo file=%%b и на том всё.  
    Явовский скрипт похоже вообще не запускается.

    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 19:41 23-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Цитата:
    Что то не пойму что он делает.
    Запускается и сразу закрывается.  
    ну вообще-то он должен выдавать стандартное виндовое окно на выбор файла, у меня вот исправно выдает, ждет пока выберу.
    почему у тебя яваскрипт не запускается - интересный вопрос...
    какая система хоть?
     
    ну и паузу перед exit впиши, на случай когда заработает, чтоб потом, если заработает - увидеть результат - батник просто печатает полные имена всех выбранных в диалоге файлов и выходит, из эксплорера я батники запускать как-то не привык
     
     
    если совсем непонятно чего с яваскриптом (может запрещен где-то насмерть)- можно на бейсике пример попробовать, но на нем я гибриды делать не умею - будут 2 файла, хотя сам пример сильно короче.
     

    Код:
    @echo off
    1>%temp%\browse.vbs (
    echo.Set objDialog = CreateObject^("UserAccounts.CommonDialog"^)
    echo.objDialog.Filter = "text|*.txt;*.log;*.ini|All|*.*"
    echo.objDialog.FilterIndex = 1
    echo.objDialog.InitialDir = "C:\"
    echo.objDialog.Flags = 4 + 4096 + 524288 + 2097152
    echo.intResult = objDialog.ShowOpen
    echo.If intResult = 0 Then
    echo.    Wscript.Quit
    echo.Else
    echo.    Wscript.Echo objDialog.FileName
    echo.End If
    )
     
    for /f "tokens=*" %%a in ('cscript //nologo "%Temp%\Browse.Vbs"') do echo file=%%a
     
    exit
     
    значение флагов - см. в предыдущем скрипте, но куска печати списка имен тут нет - мультивыбор запретил.
     
     
    ps: тестировал всё на XP pro sp3

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 19:57 23-06-2010 | Исправлено: wolf0425, 21:28 23-06-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Ось Windows 7.
    Цитата:
    @echo off
    1>%temp%\browse.vbs ...(  
     
    В ответ

    Цитата:
    C:\Users\WINTES~1\AppData\Local\Temp\Browse.Vbs(1, 1) Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX: 'UserAccounts.CommonDialog'
    .


    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 22:11 23-06-2010
    WesternLight

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Прошу помощи, вижу рядом wolf0425
     
    wolf0425, помоги, плиз, я все с тем же кодом, который меняет шрифт консоли. Проблема вот в чем, когда это в реестре:

    Код:
    [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
    "FontSize"=dword:0010000c
    "FontFamily"=dword:00000030
    "FaceName"="Terminal"
    "HistoryNoDup"=dword:00000000

    это код работает как положено:

    Код:
    @echo off
    chcp 1251>nul
    title Я прога
     
    "%CD%\reg.exe" query "HKCU\Console" /s|findstr /i /r FaceName.*Terminal 1>nul && (
     
    for /f "delims=" %%A in ('""%CD%\reg.exe" query "HKCU\Console"" ^|findstr /b /i /r HKEY_CURRENT_USER\\Console\\.') do "%CD%\reg.exe" delete %%A /f
     
    "%CD%\reg.exe" add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
    "%CD%\reg.exe" add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
     
    start "" "%~f0" %* & exit
     
    ) 1>nul
     
     :begin
    echo Кракозябрам нет!
     
    pause
    exit

    если же в реестре это:

    Код:
    [HKEY_CURRENT_USER\Console\H:_Program Files_Program_ProgramUpdate_lantransport.exe]
    "FontSize"=dword:0010000c
    "FontFamily"=dword:00000030
    "FaceName"="Terminal"
    "HistoryNoDup"=dword:00000000

    то батник бесконечно перезапускается, проверил все - не понимаю...

    Всего записей: 61 | Зарегистр. 07-10-2007 | Отправлено: 22:13 23-06-2010 | Исправлено: WesternLight, 22:14 23-06-2010
    SPY



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    http://www.rapidshare.ru/1547093

    Всего записей: 646 | Зарегистр. 07-11-2003 | Отправлено: 22:17 23-06-2010
    wolf0425



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

    Цитата:
    Здравствуйте! Прошу помощи, вижу рядом wolf0425  
    да мне сейчас бежать, сижу звонка жду.
     

    Цитата:
    то батник бесконечно перезапускается, проверил все - не понимаю...

    виноват, схалявил
    do "%CD%\reg.exe" delete "%%~A" /f

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 22:42 23-06-2010 | Исправлено: wolf0425, 22:48 23-06-2010
    WesternLight

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

    Цитата:
    do "%CD%\reg.exe" delete "%%~A" /f  

    wolf0425, спасибо! завтра попробую...

    Всего записей: 61 | Зарегистр. 07-10-2007 | Отправлено: 23:42 23-06-2010 | Исправлено: WesternLight, 23:43 23-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто мне объяснит - от чего зависит каким бипом блямкнет  
    rundll32 user32.dll,MessageBeep  
    1. чего бы ей прописать, чтоб бипы всегда звучали одинаково.
    2. чего бы прописать, чтоб устойчиво получать те блямсы, что я слышу  в результате этой команды только иногда, совершенно неожиданно вместо дефолтового глуховатого бипа.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:10 24-06-2010 | Исправлено: wolf0425, 00:12 24-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    Вот что пишут в МСДН.
    Только у меня почему то результат один и тот же не зависимо от параметров. Правда время от времени вообще звуков нет.
     
     
    Добавлено:
    Похоже, любой передаваемый параметр не доходит до MessageBeep, т.к. rundll передает в функцию еще и хэндл окна, указатель на командную строку и т.п. А функция должна сама все это разбирать, ну а MessageBeep этого не делает.
    Вот тут подробно о работе rundll32.
    Разве что чисто случайно хэндл окна совпадет с одним из воспринимаемых функцией значений и она прозвенит соответствующим образом.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:45 24-06-2010
    mugil_cephalus

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

    Цитата:
    кто мне объяснит - от чего зависит каким бипом блямкнет  

    после пятой запуска писки прекратились - не пищит...  (ни из батника, ни через консоль ; через консоль и через bat - звуки были разные )
    вообще у меня всегда  пищало через колонки , через сис. динамик - никогда  win 5.1 sp3 rus
    здесь - http://dx21.com/coding/libraries/rundll32/default.aspx (литера B ) - пишут поддержка только для win98
    этот call попадался мне где то здесь  
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2033&limit=1&m=1#1
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2034&limit=1&m=1#1
    p.s.
    ну это все...  -  
    Код:
    echo.
    - меня не подводило....

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:22 24-06-2010 | Исправлено: mugil_cephalus, 12:09 24-06-2010
    res2001



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

    Цитата:
    здесь - http://dx21.com/coding/libraries/rundll32/default.aspx (литера B ) - пишут поддержка только для win98  

    Только в вин98 потому что в приведенной ссылке используется библиотека user.dll, а в вин2000 и далее уже user32.dll

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:47 24-06-2010
    mugil_cephalus

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

    Цитата:
    Только в вин98 потому что в приведенной ссылке используется библиотека user.dll, а в вин2000 и далее уже user32.dll

    не важно, у меня и 32-битная библиотека на этот вызов не стабильна ( сейчас обнаружил, т.к. этим вызовом  пользовался пару раз ) ; к тому же чем старше винда, тем разработчики microsofta все больше отказываюся от эксплуатации rundll32 и сокращают кол-во доступных колов

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:58 24-06-2010 | Исправлено: mugil_cephalus, 12:07 24-06-2010
    res2001



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

    Цитата:
    у меня и 32-битная библиотека на этот вызов не стабильна  

    аналогично

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:06 24-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну ладно, я понял что rundll32 user32.dll,MessageBeep  блямкает в ХР чисто случайно, и закладываться на неё не надо.
     
    Есть ли какой-то штатный способ из консоли попросить винды (win2k+) проиграть какой-нибудь %windir%\media\ringin.wav (без открытия левых окон проигрывателей, конечно же)

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 12:10 24-06-2010 | Исправлено: wolf0425, 12:17 24-06-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    поищи в GetRunDL.vbs    List all RUNDLL(32) commands for file associations from the registry            http://www.robvanderwoude.com/files/getrundl_vbs.txt  
     
    Добавлено:
    хотя вроде тоже самое можно получить и так  

    Код:
    ftype |find /i "rundll"

     

    Цитата:
    Есть ли какой-то штатный способ из консоли попросить винды (win2k+) проиграть какой-нибудь %windir%\media\ringin.wav (без открытия левых окон проигрывателей, конечно же)

    посм. http://www.ericphelps.com/batch/rundll/ но там вроде старые оси
    и еще - http://www.robvanderwoude.com/rundll.php

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:15 24-06-2010 | Исправлено: mugil_cephalus, 12:35 24-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    sndRec32.exe /play /close /embedding ding.wav

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:38 24-06-2010
    boy999



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А тут есть спецы, знающие, как запустить MBR со скрытым окном!?
     
    Вот рабочий скрипт на флэшке:  
    Set WSHShell = WScript.CreateObject("WScript.Shell")  
    CurDir = WSHShell.CurrentDirectory  
    WSHShell.Run CurDir & "\\mpr\\MPR.exe /export", 0
     
     
     
    Можно ли и чего там надо добавить для скрытого запуска!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 12:46 24-06-2010
    res2001



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

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:50 24-06-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Дай наводку на тему vbs'ок плиз, я boy999 подробно расскажу что к чему.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 12:57 24-06-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую усех.
    Прошу прощения за профанский вопрос. Согласно мною читанному в конструкции for... in... do... для команд нужно использовать знак `, типа: `команда`. И вот работающий скрипт из седьмой "серии" данной темы, в котором это правило выполняется, и он работает:
    http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=17154&start=1940#21
    Почему у меня никогда не работает эта конструкция, если я использую `? А вот ежели знак ', то - работает.
    Вот простой пример:
    For /F "Skip=1 Tokens=*" %%A In ('WMIC /Node:LocalHost OS Get LocalDateTime') Do Echo %%A
    Достаточно сменить знак ' на `- работать перестаёт.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 13:01 24-06-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