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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    BorlandIMHO

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

    Цитата:
     // Вот тут я дописал чтобы в смд открывалась папка иначе прога тупит

    Тогда уж надо не cd "%LOCALFOLDER%", а pushd "%LOCALFOLDER%" перед for'ом и popd после него...
    И Вы уже определитесь со слешами - мой код писАлся в расчёте на указание локального пути со слешем на конце и ftp-пути без обратного слеша на конце...

    ----------
    http://www.imho.ws

    Всего записей: 2654 | Зарегистр. 12-10-2006 | Отправлено: 21:10 22-01-2010
    Scaramanga



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет.  В написании батников не спец, точнее вообще этим практически не занимался. Проблема в том что качаю по ночам на анлиме с 3g модема, а там бывают переодически разрывы связи, каждый такой разрыв уводит оставшуюся ночь в пустую.Интересует следущее
    Возможно ли в батнике написать следущую задачу
     
    Запускается батник и в фоне. Действия:
    1. Запуск программы "C:\Program Files\3G Modem Manager\3G Modem Manager.exe"
    2. Ожидание 2 минуты
    2.запуск дозвона телефонного подключения NIGHT
    3. Ожидание разрыва соединения
    4. В случае разрыва соединения убивается процесс 3G Modem Manager.exe
    на этом зацикливается т.е. после разрыва соединения переходим снова к пункту 1 и т.д.
    Батник закрывается в 7.55 утра
     
    Заранее спасибо за ответы

    Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 07:50 23-01-2010
    Pacho



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    king_stiven
    Я про команду, которая передаёт выходные данные от одной команды в качестве параметров для другой команды, как, например, здесь:

    Код:
    assoc ^| findstr /i word

    Или для SET так не получится?
     
    Добавлено:
     
    При запуске новой копии CMD из командного файла все последущие команды ждут его завершения. А можно сделать, чтобы эти команды выполнялись в новой копии CMD?

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 10:33 23-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    Просто хотел чтобы в одном батнике всё вместилось. У меня ещё в процессе разработке, функция добавляющая этот бат в сервисы. А если 2 бата будет то будет просто не удобно.  
     
    Добавлено:
    Народ а нет ли программки для проверки бат фалов. Ато постоянно запускать, создавать левые копии ручками надоело и пальцы уже болят  
    Пример:
    Как на делфи 7 проверка кода, подсветка и другие функции.  
    P.S Для работы с batch файлами только одна прога есть quick batch file compiler.

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 13:40 23-01-2010
    Kirillhome



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

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 13:59 23-01-2010
    israel_rider

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Пипл, помогите!
    Есть директория с файлами. Их нужно преобразовать. Пишу –
    @Echo Off  
    For %%a In (*.htm) Do phpCB.exe %%a > %%a
    Где –  
    phpCB.exe программа, которая преобразовывает мои файлы.
    Её синтаксис -        phpCB.exe source_file > destinations_file
    Батник не работает. В чём моя ошибка?  

    Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 14:00 23-01-2010 | Исправлено: israel_rider, 14:01 23-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как реализовать подключение к интернету если у меня ДСЛ модем. Из бат разумеется.
    делаю:
     
    [cod]
    C:\>rasdial метро
    Установка связи с МЕТРО...
    Проверка имени и пароля пользователя...
     
    Ошибка службы удаленного доступа 718 - Подключение прервано , т.к.  удаленный ко
    мпьютер не ответил вовремя. Нажмите кнопку "Дополнительно" или обратитесь в цент
    р поддержки за помощью, указав номер ошибки.
     
    Чтобы вывести сведения о данной ошибке:
            введите 'hh netcfg.chm' и в Справке
            выберите раздел разрешения проблем, затем сообщений об ошибках и найдите
     718.
     
    C:\>
     
    [cod]
     
    Подключение метро отлично работает ели на него мышкой нажать или сделать ярлык подключения скинуть его на диск D:\
    убрать оторажения хода подключение.
    и написать бат  
    start d:\1.lnk  
    ping -n 3 127.0.0.1 >null
     
    возможно проблемма связана с тем что подключение не осуществляется за короткий промежуток времени. Тоесть время ожидание подключение слишком мало.  
     

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 15:26 23-01-2010
    haxx0r



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rasdial должен быть в таком формате:
     
    rasdial [название подключения] [юзер] [пасс]

    Всего записей: 418 | Зарегистр. 02-12-2007 | Отправлено: 15:34 23-01-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    israel_rider
    Цитата:
    For %%a In (*.htm) Do phpCB.exe %%a > %%a
    Где –  
    phpCB.exe программа, которая преобразовывает мои файлы.
    Её синтаксис -        phpCB.exe source_file > destinations_file
    Батник не работает. В чём моя ошибка?    
    наверно же в том что у тебя destinations_file=source_file, а твой конвертер это не допускает.
     

    Код:
    For %%a In (*.htm) Do phpCB.exe "%%a" > tempfile && move /y tempfile "%%a"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:19 23-01-2010
    israel_rider

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425! Скорее всего ты прав. Потому что -  
    @Echo Off  
    For %%a In (*.htm) Do phpCB.exe %%a > change\%%a
    Срабатывает.  
    Поэтому, за идею огромный сенкс! Сейчас буду пробовать.

    Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 16:25 23-01-2010
    wolf0425



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

    Цитата:
    А можно сделать, чтобы эти команды выполнялись в новой копии CMD?
    а как ты их об этом скажешь новому то cmd? и что должна делать текущая копия?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:31 23-01-2010 | Исправлено: wolf0425, 16:33 23-01-2010
    israel_rider

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

    Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 16:33 23-01-2010
    wolf0425



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

    Цитата:
    Твоя идея сработала!!!!!!
    я идеи иногда проверяю перед тем как советовать, так что тут и не сомневался

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:50 23-01-2010
    rutamsystem

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет,
    Как удалить из каталога все подкаталоги и все файлы за исключением файлов xls, doc, txt

    Всего записей: 4 | Зарегистр. 16-10-2009 | Отправлено: 17:38 23-01-2010
    Kirillhome



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

    Цитата:
    Как присвоить переменной значение, выводимое другой командой? К примеру переменной VAR присвоить значение текущего каталога, выводимого командой CD.

    Стоп, а что, просто так не проходит?

    Код:
    set var=%CD%

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 17:41 23-01-2010
    wolf0425



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

    Цитата:
    Стоп, а что, просто так не проходит?  
    а ты команду CD  (взятую только в качестве примера) и переменную %CD% - не смешивай.
    Спрашивали именно про то как перехватывать stdout команд, т.е. на прошлой странице ты ответил как раз правильно.
    Хотя перехватывать именно вывод команды cd для запихивания в переменную - смысла мало, да. Как и вывод date /t

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 18:05 23-01-2010 | Исправлено: wolf0425, 18:16 23-01-2010
    Pacho



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

    Цитата:
    а как ты их об этом скажешь новому то cmd? и что должна делать текущая копия?

    В шапке есть пример перехода из 32-битной версии cmd.exe в 64-битную. Но там используются два скриптовых файла, что не всегда удобно. Хочу сделать это в одном файле.
    Если запускать в командной строке:
    Код:
    %SystemRoot%\Sysnative\cmd.exe
    то открывается новая 64-битная копия CMD и можно в ней дальше работать. А вот если запускать из bat-файла:
    Код:
    %SystemRoot%\Sysnative\cmd.exe
    set
    то скрипт затыкается на запуске новой копии CMD и пока её не завершить, следущие команды не запускаются.
     
    Добавлено:
     
    Kirillhome

    Цитата:
    Стоп, а что, просто так не проходит?

    Собственно, уже ответили постом выше. Хотя меня интересует

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 18:17 23-01-2010
    Scaramanga



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KirillhomeПосле соединения примерно через минуту консоль закрывается сама по себе, соответсвенно слежения уже не происходит
     
     
    Добавлено:
    Kirillhome
    Проблема как я понимаю где то тут
    :_prv_soed
    set my_full_time=%TIME%
    IF %my_full_time:~0,1%==0 (
       set my_house=%my_full_time:~1,1%
       ) else (
       set my_house=%my_full_time:~0,2%
       )
    IF %my_full_time:~3,1%==0 (
       set my_min=%my_full_time:~4,1%
       ) else (
       set my_min=%my_full_time:~3,2%
       )  
    ошибка по которой закрывается батник  
    Непредвиденное появление: (.
     
    пробывал изменить на
    set my_full_time=%TIME%
    IF %my_full_time:~0,1%==0 (set my_house=%my_full_time:~1,1%) else (set my_house=%my_full_time:~0,2%)
    IF %my_full_time:~3,1%==0 (set my_min=%my_full_time:~4,1% ) else ( set my_min=%my_full_time:~3,2%)  
     
    стало выдавать
    Непредвиденное появление: (set.
     
    C:\Users\Юрий>
     
    Добавлено:
    Исправил на.
    :_prv_soed
    set my_full_time=%TIME%
    IF "%my_full_time:~0,1%"=="0" (set "my_house"=%my_full_time:~1,1%) else (set my_house=%my_full_time:~0,2%)
    IF "%my_full_time:~3,1%"=="0" (set "my_min"=%my_full_time:~4,1% ) else ( set my_min=%my_full_time:~3,2%)
     
    Все заработало)
     
    Добавлено:
    Последний вопрос:
    Ping -n 1 ya.ru >Nul  
    if ErrorLevel 1 GoTo :_Kill_Proc
    if ErrorLevel 0 GoTo :_prv_soed  
    Как тут увеличить время ожидания ответа хотя бы до 10000 мс? когда ухожу спать приоритет закачки выставляю по максимуму, уже замечал пару раз что батник просто не дожидается ответа от сервера

    Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 02:06 24-01-2010 | Исправлено: Scaramanga, 02:43 24-01-2010
    wolf0425



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

    Цитата:
    то скрипт затыкается на запуске новой копии CMD и пока её не завершить, следущие команды не запускаются.  

    текущий поток команд исполняется  текущим интерпретатором, он же никуда не делся и ждет завершения команды. Хочешь чтоб не ждал - сделай чтобы команда заканчивалась, т..е. запускай новую копию cmd через start и указывай ей ну например тот же батник с параметром - а в начале батника делай ветвление по проверке этого параметра.
     
    Добавлено:
    Scaramanga

    Цитата:
    Ping -n 1 ya.ru >Nul  
    if ErrorLevel 1 GoTo :_Kill_Proc
    if ErrorLevel 0 GoTo :_prv_soed  
    Как тут увеличить время ожидания ответа хотя бы до 10000 мс?

    ping /?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 05:00 24-01-2010
    Pacho



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

    Код:
    for /f "delims==" %%i in ('assoc ^| findstr /i word') do (
      тут чё-то делаем
      далее, если %%i входит в список, например (.doc .rtf), то делаем то-то
    )

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 11:57 24-01-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru