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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!  
    Есть две задачки. Огромная просьба помочь в решении.  
     
    1. Батник записывается в виде  
     
    cmd /c "комманда1&&команда2&&...командаN"  
     
    возможно ли в такой конструкции организовать так, чтобы сначала выскакивало окно, в котором бы задавался вопрос типа "Продолжить ?" и были бы две кнопки ОК и Отмена. При нажатии на Отмена - обработка команд завершается, при нажатии на на ОК - выполняется следующая команда. Окно должно быть не cmd, а нормального виндузового вида.  
     
    2. Есть два текстовых файла. Один полностью юникодный (содержаться строки на разных языках). Задача: удалить из юникодного файла строки, в которых содержатся определённые слова. Список слов - во втором файле. Возможно есть какая-нибудь утилита, которая поможет решить эту задачу из комстроки?

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 19:38 17-01-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    "батниками" никак
    можно используя технологию WSH

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 21:02 17-01-2009
    korosya

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

    Цитата:
    "батниками" никак  
    можно используя технологию WSH

    Надеюсь это ответ на мой вопрос. На первый или на второй?
    И нельзя ли поподробнее.

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 21:47 17-01-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korosya
    Диалоговое окно "Yes/Cancel" можно получить с помощью nircmd
     
    Второй вопрос, на первый взгляд, можно решить с помощью утилиты iconv

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:10 17-01-2009
    korosya

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

    Цитата:
    Диалоговое окно "Yes/Cancel" можно получить с помощью nircmd

    Не смог разобраться. Объясни, пожалуйста.

    Цитата:
    Второй вопрос, на первый взгляд, можно решить с помощью утилиты iconv

    Не сработало. Мне надо из файла INTL.INF (находиться в папке I386 дистрибутива Windows XP) удалить строки, содержащие слова, которые находятся в файле DelOC.lst.
    Файл DelOC.lst:
    Подробнее...
    Выдало

    Цитата:
    iconv: intl.inf: cannot convert


    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 01:07 18-01-2009 | Исправлено: korosya, 01:11 18-01-2009
    01MDM



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

    Цитата:
    Не смог разобраться. Объясни, пожалуйста.

    Простой пример:

    Код:
     
    @echo off
    chcp 1251 1>nul
    nircmdc qbox "Запустить калькулятор?" "Заголовок" "calc"
     

     
    C iconv напишу позже.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 01:24 18-01-2009
    korosya

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

    Цитата:
    Простой пример:  
     
    Код:  
    @echo off  
    chcp 1251 1>nul  
    nircmdc qbox "Запустить калькулятор?" "Заголовок" "calc"

     
    Понял как запустить калькулятор. А вот как при помощи nircmdc разрешить/запретить выполнение батника, из которого запускается сам nircmdc? То есть задача стоит следующая - из батника запускается какая-то команда, которая выводит на экран виндузовое меню с кнопками OK и Отмена, и при на жатии на ОК батник выполняется дальше, а при нажатии на Отмена - выполнение батника прекращается. И, если возможно, то хотелось бы организовать это без сторонних утилит. Может быть при помощи JS или VBS, но как их запустить из батника, а потом вернуться обратно в батник?
     

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 02:13 18-01-2009
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korosya
    вместо calc пишы goto end и в конце батника :end

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 02:18 18-01-2009
    korosya

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

    Цитата:
    вместо calc пишы goto end и в конце батника :end

    Сделал

    Код:
    chcp 1251 1>nul  
    nircmdc qbox "Запустить калькулятор?" "Заголовок" "goto end"
    calc
    :end

    и при нажатии на любую кнопку запускается калькулятор

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 02:26 18-01-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korosya
    Ничего не понял, но все таки давай по пунктам, что надо решить в первую очередь. Допустим если я начинаю писать батник, то пишу в первую очередь `@echo off` или `!#/bin/bash

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 05:34 18-01-2009
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Начну сначала.
    В реестре есть ключ UninstallString в секции  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Prog. При запуске "Установка и удаление программ" появляется пункт "My_Prog", в котором есть кнопка "Удалить". При нажатии на эту кнопку выполняются команды деинсталляции программы My_Prog, записанные в ключе UninstallString. Эти команды должны быть записаны в одну строку. Я создаю строку вида  

    Код:
    cmd /c "комманда1&&команда2&&...командаN"

    или

    Код:
    hidcon cmd /c "комманда1&&команда2&&...командаN"

    при наличии в системной папке утилиты hidcon.exe.
    Всё это работает, но программа My_Prog удаляется в "тихую", то есть не задавая вопросов типа "Вы точно хотите удалить программу My_Prog или просто балуетесь?".
    Теперь стоит задача, чтобы такой вопрос всё-таки задавался. Это можно сделать при помощи, например, inf-файла, но хотелось бы воспользоваться встроенными в Windows возможностями (cmd, js, vbs) и не использовать дополнительных файлов (inf, nircmdc или других).

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 11:54 18-01-2009 | Исправлено: korosya, 12:52 18-01-2009
    01MDM



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

    Цитата:
    но хотелось бы воспользоваться встроенными в Windows возможностями

    К сожалению cmd не обладает такими возможностями, если нельзя пользоваться сторонними утилитами то тогда попытайся решить задачу с помощью js или vbs. Но это уже другая тема.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:01 18-01-2009
    korosya

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

    Цитата:
    Но это уже другая тема.

    Не подскажешь, где можно посмотреть?

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 20:50 18-01-2009 | Исправлено: korosya, 21:11 18-01-2009
    ATS2000

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
     
    Задача: проверять хосты из списка, на доступность по сети командой ping. Если хост  становится недоступным, то создать файл с текущей датой и писать в него время начала отсутствия пинга и время начала появления пинга. Хорошо бы было, если бы была возможность задавать кол-во посланных пакетов, оставшихся без ответа (или наоборот с ответом), чтобы определить критерий отсутствия (присутствия связи). Пинговать будем с Windows XP.
     
    пример файла list.txt, со списком хостов:
     

    Цитата:
     
    10.2.220.1
    10.2.220.2
     

     
    пример файла 19-01-2009.log, с логом на 19 января 2009 года:
     

    Цитата:
     
    12:21 Пропал пинг с хостом 10.2.220.1
    13.10 Появился пинг с хостом 10.2.220.1
    14.15 Пропал пинг с хостом 10.2.220.2
    14.27 Появился пинг с хостом 10.2.220.2
     

     

    Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 05:51 19-01-2009 | Исправлено: ATS2000, 06:20 19-01-2009
    demon1981



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

    Код:
    @echo off
    chcp 1251  
    for /f "tokens=2 delims=:" %%i in ('ipconfig ^| find /i "адрес"') do @echo %%i>1.txt

    если в батнике пишешь то вот так как выше указано пиши. Если прям в строке, то тогда вместо %%i пиши %i и все пойдет

    Всего записей: 189 | Зарегистр. 28-03-2007 | Отправлено: 08:53 19-01-2009
    demon1981



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

    Код:
    @echo off
    chcp 1251>nul
    for /f  "tokens=1-3 delims=    " %%d in ('reg query hkcu\Software\1c\1cv7\7.7\titles^|find /i "reg_sz"') do (
    echo param1:%%dparam2:%%f
    )
    несколько строк с путем к папкам и названиями баз. Вот что в итоге того кода выходит:

    Код:
    param1:    C:\1C\Копия PDS\param2:Информационная База #1
    param1:    C:\1C\PDS\param2:ПДС
    видите в начале первого параметра 4 пробела. Внимание вопрос: как убрать эти 4 пробела, а то 7z его не хавает???????
     
    я убрать могу, но в результате моего способа их несколько появляется в конце параметра, что тоже не гут. Способ выложу позднее (дома на ноуте экспериментировал)

    Всего записей: 189 | Зарегистр. 28-03-2007 | Отправлено: 15:52 19-01-2009
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    demon1981
    Попробуй убрать из строки for-а "delims=   ".


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:22 19-01-2009
    Zakkazak



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

    Код:
    var WSHShell = WScript.CreateObject("WScript.Shell");
    WSHShell.Run ("\"E:\\Program Files\\FlashGet\\flashget.exe\"",0);

     
    Спасибо, с длиными путями разобрался из книги которую ты указал. Только не понятно, почему не запускается в разных режимах пробовал следующие значения 0,2,6.  . В книжке об этом вроде не написанно  
     

    Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 17:29 19-01-2009
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возник такой вопрос:
    При использовании cmd.exe возможновыполнение команд без создания батника как файла. То есть можно в Пуск-Выполнить написать cmd /с "команда1&команда2&..." и будут последовательно выполнены команды 1,2 ....  
    Хотелось бы узнать возможно ли такое с JS/VBS?

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 20:38 19-01-2009
    FaUsT333

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. Имеется следующий вопрос к знатокам:
    Вкратце - необходимо собрать несколько бинарных файлов в один, потом этот файл переименовать и переместить в другое место.
    Подробно: Файлов в папке несколько, от 16 до 25, каждый день по разному, размер каждого 160 Кб, именуются файлы таким образом - 01190725.mom, где 01 - это месяц январь, 19 - число месяца, 0725 - время формирования на удаленной машине. Файлы отличаются только временем создания за сутки, например 01190125 по 01192250, т.е с часа ночи по 22.50 вечера. Я каждый день в Фаре вручную их собираю, путем выделения всех и далее стоя на первом файле пачки (пачка - суммарное кол-во суточных файлов) копирую в один файл с именем bin0_011909.001 и кидаю его на диск Е:\. Помогите пожалуйста советом, как можно этот процесс автоматизировать? Спасибо.

    Всего записей: 76 | Зарегистр. 17-04-2008 | Отправлено: 22:07 19-01-2009
       

    Страницы: 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-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru