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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    neponytki



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    мы не ищем легких путей. чтобы узнать запущен ли процесс записываем список процессов в тхт ищем строку с именем процесса потом делаем выводы убить его чтоб небыло повторного запуска или снова запустить.
       
    есть варианты попроще?

    Всего записей: 20 | Зарегистр. 18-01-2009 | Отправлено: 14:16 26-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    neponytki
    Если надо убить запущенный процесс, и известно его имя, то проще всего выстрелить не метясь:

    Код:
     
    2>nul taskkill /im calc.exe || start calc
     

    Если запущен - убивает, иначе запускает


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:23 26-03-2011
    neponytki



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    имя известно только если он не запущен вылет с ошибкой
     
     
    Добавлено:
    и еще байда запускаю прогу через планировщик нормально из ком строки хрень с ошибками прога "билайн интернет дома БИД09" может в starte параметры какие указать надо?

    Всего записей: 20 | Зарегистр. 18-01-2009 | Отправлено: 14:27 26-03-2011
    res2001



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

    Цитата:
    Не уже ли нет программы, которая могла бы вычислить время. К тому же там еще дату надо вычислять, только ща обратил на это внимание.

    Если еще и дату надо, то проще всего, как я и писал выше, через VBS/JS скрипт вычислить разницу и передать назад в батник.
    В прошлой части этой ветки я выкладывал батник, который переводит дату/время в секунды и назад. Можешь воспользоваться.
    Lamman
    1.Можно через for или воспользоваться рекурсивным dirом и фильтром findstr: dir /s ... | findstr "имя файла/каталога"
    2.Давай конкретную задачу.
     
    Добавлено:
    neponytki

    Цитата:
    имя известно только если он не запущен вылет с ошибкой  

    >nul 2>&1 taskkill /im calc.exe || start calc

    Цитата:
    и еще байда запускаю прогу через планировщик нормально из ком строки хрень с ошибками прога "билайн интернет дома БИД09" может в starte параметры какие указать надо?  

    Какие ошибки?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:40 26-03-2011
    Oll08



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

    Всего записей: 37 | Зарегистр. 11-08-2008 | Отправлено: 17:51 26-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Oll08
    Может тебе поможет команда cd? Зачем огород городить с диалоговым окном.
    cd /d c:\каталог\подкаталог234

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:05 26-03-2011
    Oll08



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

    Всего записей: 37 | Зарегистр. 11-08-2008 | Отправлено: 18:16 26-03-2011 | Исправлено: Oll08, 18:19 26-03-2011
    res2001



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

    Цитата:
    а 234 это что?

    ты же написал, что у тебя 500 подкаталогов, ну вот это 234 подкаталог, для примера.

    Цитата:
    но у меня  ничего не получилось

    Наводящий вопрос: где ты хочешь чтоб у тебя открылся нужный подкаталог?  
    Есть разные варианты, например: в командной строке установить текущий каталог, в каком-либо файловом менеджере, в проводнике.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:21 26-03-2011 | Исправлено: res2001, 18:21 26-03-2011
    Oll08



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

    Всего записей: 37 | Зарегистр. 11-08-2008 | Отправлено: 18:22 26-03-2011
    res2001



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

    Код:
    @echo off
    set "rootdir=c:\root\"
     
    set /p cat="Введите имя подкаталога: "
    if exist %rootdir%%cat% explorer.exe %rootdir%%cat% & exit
    echo.Нет каталога: %rootdir%%cat%!
    pause

    Установи правильно переменную rootdir во второй строке.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:30 26-03-2011
    Oll08



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Разобралась, сейчас попробую.
     
    Добавлено:
    res2001
    О, вы волшебник)) спасибо большое, всё получилось.  Только "Введите имя подкатолога" пишет в cmd,  это правильно? и только потом переходит в проводник.

    Всего записей: 37 | Зарегистр. 11-08-2008 | Отправлено: 18:38 26-03-2011 | Исправлено: Oll08, 18:39 26-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Oll08
    Так и задумывалось - батники не умеют работать с графическими окнами.
    Если хочется окошек, надо делать на VBS/JS.
    А вообще можешь просто в Пуск->выполнить набрать "explorer <путь к нужному каталогу>".

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:50 26-03-2011
    Oll08



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

    Всего записей: 37 | Зарегистр. 11-08-2008 | Отправлено: 19:02 26-03-2011 | Исправлено: Oll08, 19:03 26-03-2011
    sounknow



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вопрос такой. как читать с файла в переменную
    к примеру имеется блокнот test.txt и содержит данные типа 27.03.2010 (единственная строка) необходимо получить переменную d ".bat"  27.03.2010
    заранее благодарю за помощь.

    Всего записей: 35 | Зарегистр. 15-10-2010 | Отправлено: 03:25 27-03-2011
    neponytki



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [q][/q]
    @ECHO OFF
    start d:\bih09\ejectdisk.exe
    START D:\bih09\bih.exe
    SET dt=50
    PING -n %dt% -w 1000 127.0.0.1 > nul
     
    :start
    RASDIAL megafon
    IF %ERRORLEVEL%==0  GOTO rabotaet
    GOTO e623
    e
    :RABOTAET
    ECHO "rabotaet"
    SET dt=50
    PING -n %dt% -w 1000 127.0.0.1 > nul
    GOTO start
     
    :e623
    ECHO "nerabotaet"
    TASKKILL  /im bih.exe /F
    START D:\bih09\bih.exe
    SET dt=50
    PING -n %dt% -w 1000 127.0.0.1 > nul
    rasphone.exe -d "megafon"
    GOTO start
     
     
     
    если процесс запущен  получаю ошибку из проги имодем не активируетя
     
     
    Добавлено:
    задержка нужна чтобб бид родил простоон кривыми руками сделан переделали основу от телсры но криво с ком строки какрас в неё и попадаю чё в старте прописать?

    Всего записей: 20 | Зарегистр. 18-01-2009 | Отправлено: 07:46 27-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sounknow
    Из первой сроки файла:

    Код:
     
    @echo off
     
    0<file.txt set /p "b="
    echo %b%
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:28 27-03-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    neponytki
    start "" d:\bih09\ejectdisk.exe

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 13:31 27-03-2011
    Lamman



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    1) За findstr - спасибо, поюзаю. Как-то я её проглядел.
    2) Куда уж конкретней?..
    Из п.1 снимается вопрос разбора, а далее подразумевалось банальное "найти-и-заменить", выполняемое не мной, а скриптом при заходе в систему, например.
    Не столько ради экономии времени, сколько ради профилактики рассеянности.
     
    3) Кажется, уже где-то звучало - создать vpn-подключение из сценария?
    Или, скажем, напрямую через реестр?

    Всего записей: 22 | Зарегистр. 23-04-2010 | Отправлено: 15:45 27-03-2011 | Исправлено: Lamman, 15:45 27-03-2011
    res2001



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

    Цитата:
    Куда уж конкретней?..

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

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:17 28-03-2011
    wolf0425



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

    Цитата:
    2) Куда уж конкретней?..  
    есть куда - непонятно насколько сложный разбор тебе требуется, т.е. есть ли смысл придумывать универсальное решение или можно обойтись частным.
    Вместо универсального встроенными средствами - обычно гораздо правильнее использовать sed. Пишешь пример входных строк и описание что там заменять, а что нет - тебе быстро накидают примеров, это делающих в одну строку.
     
    а встроенными средствами делается через разбор входного файла на строки через for /f (о наличии в файле пустых строк - предупреждать, там отдельный геморрой), поиск чего-то там в строке - или через тот же findstr или через set + if,  печать в выходной файл или неизмененной строки или заново сформированной. Но при таком подходе будут ограничения по спецсимволам в файле...

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:48 28-03-2011 | Исправлено: wolf0425, 10:52 28-03-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru