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

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



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

    Цитата:
    Ты о чём? Обьясни подробнее...

     
    Интересно , а как участники этой темы запускают cmd ?
    Неужели через "выполнить"

    Всего записей: 3925 | Зарегистр. 22-11-2006 | Отправлено: 05:00 10-04-2007
    NIKZZZZ



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

    Цитата:
    Мне кажется, как раз с VBS гибрид не получится.

    Получиться должен. У меня нет подробного описания VBS, практически во всех мануалах тонкости как раз и пропущены. Например, как на VBS написать "конец скрипта", чтобы последующие строки игнорировались?
       

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 05:33 10-04-2007
    NIKZZZZ



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

    Цитата:
    Можно как нитбудь при помощи батника или как-нибудь сторонне в файле Opera.ini заменить строки:
    [SectionName]
    HTTPS server=192.168.2.12:2456
    FTP server=192.168.2.12:2456
    Gopher server=192.168.2.12:2456
    HTTP server=192.168.2.12:2456  

     
    Наиболее просто решить эту задачу, используя вещи, заточенные под работу с ini  файлами.
     

    Код:
    ;rem IpSet.cmd
    ;echo off
    ;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "HTTPS server" "%1"
    ;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "FTP server" "%2"
    ;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "Gopher server" "%3"
    ;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "HTTP server" "%4"
    IniWrite($CmdLine[1],$CmdLine[2],$CmdLine[3],$CmdLine[4])

     
    Здесь используется строка на Autoit. Необходим файл Autoit.exe
     
    Вместо "SectionName" нужно подставить значение, взятое из opera.ini (я добавил как это выглядит в цитату)
    Для замены нужно выполнить
    IpSet.cmd  "ip1" "ip2" "ip3" "ip4"
     
    Если не хочется связываться с Autoit.exe вот готовый exe-шник
     
    В этом случае код выглядит так:

    Код:
    rem IpSet.cmd
    echo off
    IniWrite "c:\...\opera.ini" "SectionName" "HTTPS server" "%1"
    IniWrite "c:\...\opera.ini" "SectionName" "FTP server" "%2"
    IniWrite "c:\...\opera.ini" "SectionName" "Gopher server" "%3"
    IniWrite "c:\...\opera.ini" "SectionName" "HTTP server" "%4"

     
    Это отнюдь не агитация за Autoit.Я хорошо отношусь к батникам, сделать им, при желании можно все. Но часто затраты труда при этом оказываются слишком велики. Да и все равно оказываются необходимы внешние программы. Почему-бы не выбрать наиболее подходящий инструмент для конкретной задачи?
     
     
     
     
     
     
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:51 10-04-2007 | Исправлено: NIKZZZZ, 07:54 10-04-2007
    Smitis



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

    Цитата:
    Получиться должен. У меня нет подробного описания VBS, практически во всех мануалах тонкости как раз и пропущены. Например, как на VBS написать "конец скрипта", чтобы последующие строки игнорировались?

    Нет у него такого - "конец скрипта". Это же не Перл
    И точек пересечению у CMD и VBS нет. У JS, например, удалось приспособить директиву @set. А у VBS такого нет.

    ----------
    Разум когда-нибудь победит

    Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 10:16 10-04-2007
    igor_andreev

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

    Код:

    Set s=CreateObject("WScript.Shell") : s.Popup "It's vbscript",1,"oops", 64 '& cls & wscript //e:vbscript %0 & echo It's cmd & pause

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 12:07 10-04-2007
    NIKZZZZ



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

    Цитата:
    И точек пересечению у CMD и VBS нет.

    Если таких точек нет, значит их надо создать! Можно , например написать пустую VBS процедуру, вызов которой VBS проигнорирует, а батник выполнит. Можно воспользоваться продолжением строки-
     
    on error _
    goto 0
    -----
    -----
    :0
     
    Не верю я, что это невозможно!!!
     
     
     
     
     
     
    Добавлено:
    igor_andreev
    Красивый пример, но bat - часть должна быть в одной строке. Реально практически не применимо.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:17 10-04-2007
    igor_andreev

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

    Цитата:
    Можно , например написать пустую VBS процедуру, вызов которой VBS проигнорирует, а батник выполнит.

    VBS не игнорирует ничего, он сразу при загрузке проверяет весь скрипт на синтаксис. Шаг вправо, шаг влево, прыжок на месте расцениваются как Error

    Цитата:
    bat - часть должна быть в одной строке.

    Кто такое ТУ установил?  
    cls вставил, чтоб вывод батника убрать, не вижу, куда тут @echo off воткнуть. Но ошибок нет, ни для vbs, ни для cmd.

    Цитата:
    Реально практически не применимо.

    Да собссно от всех гибридов толку, как от козла молока
     

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 12:39 10-04-2007 | Исправлено: igor_andreev, 12:42 10-04-2007
    Elroir



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

    Цитата:
    Да собссно от всех гибридов толку, как от козла молока  

    Ну... в большинстве случаев может и так . Но вот какие-нибудь сообщения выводить в MessageBox-ах может пригодиться.

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем большое спасибо за помощь, сделал я экзешник из батника, при помощи sed.
    Метод NIKZZZZ слишком тяжелый фаил получается, просто это фигня должна работать у всех в сети, причем должен быть 1 экзе фаил, который с любова местоположения изменял порты в опере. Задача решена, всем огромное спасибо, я бы сам не справился.

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 13:14 10-04-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый
     
    нет ли возможности считать серийный номер процессора средствами cmd, vbs
     
    everest пишет что его нет.

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 14:27 10-04-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JohnRD
    Ну если Эверест не видит, то помочь смогут только (под вопросом) только специализированные программы от производителей процессоров

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:45 10-04-2007
    Smitis



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

    Цитата:
    Красивый пример, но bat - часть должна быть в одной строке. Реально практически не применимо.

    Как раз - некрасивый пример.
    - Эхо не отключается.
    - Экран принудительно очищается.
    - "BAT-часть должна быть в одной строке"
     

    Цитата:
    Да собссно от всех гибридов толку, как от козла молока

    Некоторые вещи удобнее делать командным файлом, некоторые скриптом.
    У меня много гибридов CMD+KIX. Собственно, одна из причин, по которой я в своё время стал использовать kixtart - лёгкий способ получения таких гибридов.

    ----------
    Разум когда-нибудь победит

    Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 17:28 10-04-2007
    igor_andreev

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

    Цитата:
    Как раз - некрасивый пример.

    Согласен, некрасивый. Но другого до сих пор никто еще не предложил. А общего у vbs и cmd только REM. И там и там можно использовать, как комментарий. Ну еще и там и там строка может начинаться с IF. Шут знает, как все в одну кучу собрать...

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 17:41 10-04-2007
    Smitis



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    igor_andreev
    Ещё SET.
    Но красивого способа я так и не придумал.
    Вот с JS - красиво получилось.
    Вот это действительно "задачи на bat-файлах", для чего эта тема в своё время и создавалась

    ----------
    Разум когда-нибудь победит

    Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 17:46 10-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Smitis
    Вот тут нашел пример vbs.bat:

    Код:
     
    :On Error Resume Next
    Sub bat
    echo Batching_codez_here_following_vbs_rules & pause
    start wscript -e:vbs "%~f0"
    Exit Sub
    End Sub
    MsgBox "This is vbs"
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:45 10-04-2007 | Исправлено: Elroir, 18:46 10-04-2007
    sansun

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, как через bat скачать.скинуть файлы на ftp (пароль задан в 16-м формате)

    Всего записей: 8 | Зарегистр. 10-04-2007 | Отправлено: 19:44 10-04-2007
    igor_andreev

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

    Цитата:
    Вот тут нашел пример vbs.bat:

    Да нее, не то, щас Smitis придет - раскритикует. Ошибки выдает, типа 'Sub' is not recognized as an internal or external command...
    sansun

    Цитата:
    подскажите, как через bat скачать.скинуть файлы на ftp

    Да просто, берешь и скидываешь Правильно заданный вопрос - уже половина ответа. Какие символы в пароле, пример приведи. И чем скачивать-закачивать собрался, прог то много.
     
     

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 20:58 10-04-2007
    Elroir



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

    Цитата:
    Да нее, не то, щас Smitis придет - раскритикует

    Ну... тогда поставим и перед Sub двоеточие.
    Так никакого сообщения об ошибке нет.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:01 10-04-2007 | Исправлено: Elroir, 22:01 10-04-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как вызвать выполнение командного файла через cmd если в %comspec% прописан 4nt?
    Пытался (проверить) cmd /k my.cmd, но все равно вызывается для выполнения 4nt.
    Может это не очень важно,  но для совместимости играет роль.  
    Просто для Samurize'а написал небольшой bat-script о времени жизни оси. В 4-ке все работает, но если:

    Код:
     
    if "%comspec%"="path\to\cmd.exe" goto cmd
    if "%comspec%"="path\to\4nt.exe" goto 4
     

    Все равно вызывается 4nt
     
    В 4nt формат вывода даты отличается от cmd?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:42 10-04-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    У меня нет 4nt, но может попробовать через %cmdcmdline%?

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 23:55 10-04-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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru