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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joolz
    Вот что получилось, у меня вроде выводит все значения "DisplayName" и "UninstallString" если они есть.

    Код:
     
    @echo off
    setlocal
    chcp 1251 1>nul
     
    set rpath=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
    for /f "tokens=*" %%a in ('reg query %rpath% ^| findstr "HKEY"') do (
        for /f "tokens=3*" %%b in ('reg query "%%a" ^| findstr "\<DisplayName\>"') do (
            set "program=%%b %%c")
        for /f "tokens=3*" %%b in ('reg query "%%a" ^| findstr "\<UninstallString\>"') do (
            set "uninstall=%%b %%c")
        call:write "%%a"
    )
    chcp 866 1>nul
    goto:eof
    :write
    set uninstall=%uninstall:"=%
    echo RegPath:   %~1 1>>uninst.txt
    echo Program:   %program% 1>>uninst.txt
    echo Uninstall: %uninstall% 1>>uninst.txt
    echo --------------------------------------------------------------------------- 1>>uninst.txt
    set program=
    set uninstall=
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:45 19-02-2008 | Исправлено: 01MDM, 19:50 19-02-2008
    getname

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    сидел разбирал программу ну так ничего и не понял;( добавь пожалуйста комменты...

    Всего записей: 9 | Зарегистр. 16-02-2008 | Отправлено: 19:52 19-02-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    getname
    Извини, но получится на целую страницу.. Главное что бы работала.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:04 19-02-2008
    getname

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

    Всего записей: 9 | Зарегистр. 16-02-2008 | Отправлено: 20:24 19-02-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    getname
    Вся информация в основном из справки %WINDIR%\Help\ntcmds.chm и от сюда.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:05 19-02-2008
    getname

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    cпасибо, буду читать...

    Всего записей: 9 | Зарегистр. 16-02-2008 | Отправлено: 21:28 19-02-2008
    clio77



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли реализовать батником такую задачу.  
    1) Копировать по два файла из 4х расшареных сетевых папок.  
    2) Архивировать их в общий RAR архив  
    3) отправить архив по FTP

    Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 21:33 19-02-2008 | Исправлено: clio77, 21:42 19-02-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    TanX!
    Можно уточнить? Возможно вопрос ламерский, но до сих пор не сталкивался...
    В случае  echo RegPath:   %~1 1>>uninst.txt выводится фактически переменная %%a?
    И зачем 1 перед >>.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 09:31 20-02-2008
    01MDM



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

    Цитата:
    В случае  echo RegPath:   %~1 1>>uninst.txt выводится фактически переменная %%a?

    Да, переменная %%a - название ключа реестра.

    Цитата:
    И зачем 1 перед >>

    В общем необязательно. Это скорее для себя. Мне так удобней.
     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:41 20-02-2008
    returt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите перенаправить результат команды в переменную. Как это сделать?

    Всего записей: 43 | Зарегистр. 01-10-2007 | Отправлено: 14:05 20-02-2008
    sergdf

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите сделать следующую вещь:
    есть файл с расширением mp3, так вот нужно запустить его через bat-файл,  причем чтобы он запустился не в программе по умолчанию (Winamp), а через другую (которую укажу я)...
    Можно ли вообще сделать такое?

    Всего записей: 11 | Зарегистр. 04-05-2007 | Отправлено: 15:30 20-02-2008
    01MDM



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

    Код:
     
    FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
     

     
    Набери help for
     
    sergdf

    Код:
     
    start "" "Path\To\program.exe" "Path\To\file.mp3
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:02 20-02-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergdf
    1 вариант назначить эту программу по умолчанию для воспроизведения mp3
     
    2 вариант если у программы есть поддержка командной линии, запустить с соответствующими ключами

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 16:04 20-02-2008
    Voviy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помоги решить такую задачку,
    Нужно  запускать скрипты (vbs) на удаленном компьютере,
    Задачка  в следующем подкллючать скриптом на удаленных компах принтеры из ad,
    пробовал использовать утилиты Psexec.exe,  т.е. след. код
     
    в первом файле file1.cmd
    for /F %%A in (servers.txt) do (call file2.cmd %%A)
     
    во втором файле file2.cmd
    copy \\192.168.1.242\c$\my\scripts\connect_print.vbs \\%1\c$\
    psexec \\%1 -s -c file3.cmd
     
    в третьем файле file3.cmd
    start C:\connect_print.vbs
    ping -n 10 localhost >NUL  
    del C:\connect_print.vbs
     
    пинг использовал для задержки , чтоб vbs скрипт успевал отработать
     
    и файл servers.txt с ip компов на которых нужно прописать принтер
     
    и сам скрипт connect_print.vbs
    Option Explicit
    Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath, PrintLocation
    'Dim FSO,FileName
    Dim objWMIService, colInstalledPrinters, objPrinter
    'Создаем объект FileSystemObject
    'Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHNetwork = CreateObject("WScript.Network")
    'Задаем имя файла
    'FileName="C:\connect_print.vbs"
    On Error Resume Next
     
    sPrintPath = "\\anna\HP2430_2floor"  
    'sPrintPath = "\\anna\RICOHafi"
     
    WSHNetwork.AddWindowsPrinterConnection sPrintPath  
    WSHNetwork.SetDefaultPrinter sPrintPath
    'FSO.DeleteFile FileName
    'WScript.Echo "Файл удален"
     
    Проблема в том, что file3.cmd отрабатывает на удаленной машине,  а сам скрипт connect_print.vbs, ничего не подключает...  
    Что можете посоветовать , может как то подругому можно обойтись ?
    Заранее спасибо!

    Всего записей: 2 | Зарегистр. 12-02-2008 | Отправлено: 16:14 20-02-2008
    returt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Я не соображу как, у меня в команде еще и |find. cmd ругается "| was unexpected at this time"
    Как-нибудь можно просто перенаправить результат команды в переменную?

    Всего записей: 43 | Зарегистр. 01-10-2007 | Отправлено: 16:37 20-02-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Протестил. На локальной машине все ОК. При запуске через psexec на удаленном компе вываливается с ошибками.
    Подробнее...

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 16:51 20-02-2008
    sergdf

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

    Цитата:
    start "" "Path\To\program.exe" "Path\To\file.mp3  

     Спасибо, так работает но лишь при условии, что путь к файлу не содержит русских символов... может можно как-нибудь это обойти???

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    returt
    Приведи пример команды
    FOR /F "options" %%e IN ('command') DO set "peremenay=%%e"
     
    Добавлено:
    sergdf
    Ставь вначале
    chcp 1251 > nul

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 18:26 20-02-2008
    sergdf

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

    Цитата:
    sergdf  
    Ставь вначале  
    chcp 1251 > nul

    Огромное спасибо!

    Всего записей: 11 | Зарегистр. 04-05-2007 | Отправлено: 18:32 20-02-2008
    01MDM



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

    Цитата:
    на удаленном компе вываливается с ошибками.  

    Посмотрел на другом компьютере, тоже были ошибки. Немного изменил.  
    Теперь вроде без ошибок.

    Код:
     
    @echo off
    setlocal
    chcp 1251 1>nul
     
    set p=Program:
    set u=Uninstl:
    set rpath=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
     
    for /f "tokens=*" %%a in ('reg query %rpath% ^| findstr "HKEY"') do (
        echo RegPath: %%a 1>>uninst.txt
     
        for /f "tokens=3*" %%a in ('reg query "%%a" ^| findstr "\<DisplayName\>"') do (
            echo %p% %%a %%b 1>>uninst.txt
        )
         
        for /f "tokens=3*" %%a in ('reg query "%%a" ^| findstr "\<UninstallString\>"') do (
            echo %u% %%a %%b 1>>uninst.txt
        )
     
        echo ---------------------------------------------- 1>>uninst.txt
    )
    chcp 866 1>nul
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:52 20-02-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru