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

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



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

    Цитата:
    не сработало, идет только анимация и текст

    Для этого должен быть установлен в системе звуковой движок (советую Digalo).

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:17 06-03-2007
    Nagual



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

    Цитата:
    должен быть установлен

    это уже отход от концепции "только стандартные средства", так что не годится

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 02:36 06-03-2007
    ViSiToR



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

    Цитата:
    это уже отход от концепции "только стандартные средства"

    Не, так не получится, “Всё самое лучшее не у нас ©” .
     
    тогда получается и драйвера нужно выкинуть от звуковухи , таким образом вообще не реально что либо и чем либо озвучить.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:56 06-03-2007
    VICTOR2005



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно переименовать файла.
    Пример:
    100_0000_windows.rar на windows.rar, стирать 100_0000_ .
    Как?

    Всего записей: 20 | Зарегистр. 21-02-2005 | Отправлено: 03:30 06-03-2007
    Elroir



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

    Код:
     
    setlocal
    set "old_name=100_0000_windows.rar"
    set "name=%old_name:~9%"
    ren "%old_name%" "%name%"  
     

    Это для одного файла. Если тебе нужно переименовать несколько подобных файлов, то код надо изменить. Из твоего вопроса не понятно, что именно тебе нужно сделать.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:35 06-03-2007
    igor_andreev

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

    Цитата:
    Просто я думаю, что в шапке должны быть утилиты, которые используются часто и многими. Но это, конечно, IMHO.
    Согласен.
    Натравил батник для вытаскивания file_id.diz и descript.ion на папку с консольными тулзами. Сидю в шоке, каждую ведь еще и проверить надо(проверить - в смысле хоумпэйдж живой или нет, то что утиль работает, я уже знаю), ссылку на домашнюю страницу или на закачку дать. Да и краткое описание почти у всех по-английски, на форуме то по-русски лучше? А это еще не все, на старом ноуте папка с консольными утилитами, которые я перепробовал, около трех гигов весила . Мне то они не понравились или не понадобились, а вдруг кому-то надо? Как определить?  
     
    Под "подробнее" - тупо скопированный с listsoft.ru список категорий. По каким категориям народу нужны консольные утилиты?
     
    Подробнее...
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 04:07 06-03-2007 | Исправлено: igor_andreev, 04:15 06-03-2007
    Elroir



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

    Цитата:
    Сидю в шоке



    Цитата:
    Мне то они не понравились или не понадобились, а вдруг кому-то надо? Как определить?

    Так не надо на народ ориентироваться - то чем ты пользуешься или считаешь полезным, то и надо заносить в список. А если кто-нибудь поднимет вопрос, под который подойдет дополнительная утилита (та, которая еще не в списке) - всегда можно добавить.

    Цитата:
    По каким категориям народу нужны консольные утилиты?

    Опять же - по категориям можно и потом разложить. Когда наметится список.  
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:20 06-03-2007
    igor_andreev

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

    Цитата:
    это уже отход от концепции "только стандартные средства", так что не годится

    Ну тогда тебе остается в vbs:

    Код:
     
    CreateObject("WScript.Shell").Run("mplay32.exe /play /close ") & "file.wav", 0, false
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 05:02 06-03-2007
    Maza Faka



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

    Цитата:
    Нужно переименовать файла.  
    Пример:  
    100_0000_windows.rar на windows.rar, стирать 100_0000_ .  
    Как?

     
    Не понял конкретно, что именно тебе нужно, если просто переименовать архивы, то можно так:
     

    Код:
     
    @Echo off
    For %%i in (*.rar) do Echo %%i >> rar.txt
    For /l %%i in (1,1,10) do (
    For /F %%l in (rar.txt) do ren %%l %%iwindows.rar)
    del rar.txt
     

     
    При помощи этого батника все архивы с расширением "*.rar" переименовываются так: "1windows.rar" "2windows.rar" и т.д. до 10-ти, если кол-во архивов больше, то подправь батник (измени цифру 10 на нужное число)

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:53 06-03-2007
    VICTOR2005



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Неясно!
    пример:
    100_0001_windows.part1.rar
    100_0000_windows.part2.rar
    100_0500_windows.part3.rar
    100_0056_windows.part4.rar
    ---------------------------------
    автомат на
    windows.part1.rar
    windows.part2.rar
    windows.part3.rar
    windows.part4.rar
    готов.
    ------------------
    Как?

    Всего записей: 20 | Зарегистр. 21-02-2005 | Отправлено: 11:27 06-03-2007
    Tipulatoid



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "tokens=*" %%a in ('dir "*_windows.part*.rar" /b') do call :rename "%%a"
    goto end
     
    :rename
    for /f "tokens=3 delims=_" %%a in (%1) do ren %1 %%a
    goto :eof
     
    :end

    Добавлено:
    Опять чуток изменил - убрал лишнее
    Еще добавлено
    Хотя чего я мудрю - тут батника из двух строк хватит:

    Код:
    @echo off
    ren *_windows.part*.rar windows.part*.rar

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 12:22 06-03-2007 | Исправлено: Tipulatoid, 15:10 06-03-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А интересно, кто-нибудь решал стандартную задачу - программа, которая выводит свой собственный текст? (естественно не прямой распечаткой Type xxx.bat)

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:31 06-03-2007
    ViSiToR



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

    Цитата:
    программа, которая выводит свой собственный текст?

    Ты имеешь в виду симуляцию нажатии клавишь? мне и самому интересно такое узнать, но полагаю без внешней помощи не обойтись

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:18 06-03-2007
    NIKZZZZ



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

    Цитата:
    Ты имеешь в виду симуляцию нажатии клавишь?

    Нет. Считается , что эта задача решаема на любом языке достаточно высокого уровня. Я видел ее решение на C, 65 символов, одна строка. Интересно , можно ли ее решить батником?
     
     
     
     
    Добавлено:

    Цитата:
    но полагаю без внешней помощи не обойтись  

    Хотя бы с ней, важно не использовать для вывода текст самого батника.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:36 06-03-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Раньше была choice - можно-было задать время ожидания , а как теперь это делается ?

    Всего записей: 4178 | Зарегистр. 22-11-2006 | Отправлено: 14:17 06-03-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    euheny
    Если вы о задержке на n секунд посмотрите в шапке - "Альтернативные решения"
     

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:51 06-03-2007
    igor_andreev

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

    Цитата:
    Раньше была choice - можно-было задать время ожидания

    Так же и делается, choice /T:N,15 Clear temp files?
    Только кому нужно - скачивать отдельно приходится. В Майкрософт решили, что раз юзер продвинутый и в состоянии сам, без помощи доброй винды решить, что батнику делать через указанное время в случае ненажатия клавиши Y(или другой заданной), то самое место ей в ресурс ките. choice(zip, 20,4 Кб) из Windows 2000 Resource Kit  
     
     
    Добавлено:
    Tipulatoid
    Это о выводе запроса пользователю и продолжении работы батника через заданное количество секунд, если не нажата запрашиваемая клавиша. Удобная штука, если например батник стартует из планировщика когда тебя рядом нет, то пусть удаляет какую-нибудь папку например, если ты сидишь рядом и хочешь отменить это действие - достаточно нажать соответствующую клавишу, батник продолжит выполнение сценария без удаления. Не нажимать же на крестик в правом углу батника , ему еще дальше кучу дел надо переделать.  
     
    А если пользоваться стандартным SET /P - то батник, запущенный планировщиком на моем рабочем компе к примеру(перезагружается раз в месяц, всегда включен), будет висеть на экране и терпеливо ждать моего возвращения из командировки через 10 дней, пока не приеду и букву не введу Поэтому choice иногда бывает нужна.

    Код:

    @ECHO OFF
     
    CHOICE /T:N,5 Delete it?
    GOTO :LABEL_%ERRORLEVEL%
     
    :LABEL_1
    ECHO You press Y
    PAUSE
    GOTO :EOF
     
    :LABEL_2
    ECHO You press N
    PAUSE
    GOTO :EOF

    Все 26 букв и цифры к твоим услугам, подробнее тут, тут или в гугле. Бывают нюансы, типа в choice из Win 2003 Resource Kit параметр /M добавили, when you use ERRORLEVEL parameters in a batch program, list them in decreasing order и т.д.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 14:58 06-03-2007 | Исправлено: igor_andreev, 15:54 06-03-2007
    ViSiToR



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

    Цитата:
    Нет. Считается , что эта задача решаема на любом языке достаточно высокого уровня.

    Про какую задачу идёт речь!?
    Что имеется ввиду тут:
     

    Цитата:
    программа, которая выводит свой собственный текст?


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:56 06-03-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Результат работы должен быть эквивалентен следующему батнику:
    xxx.bat
    ************
    Type xxx.bat
    *************
    Но батник не должен!!! использовать текст, содержащийся в xxx.bat для вывода.
     
    Например
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:08 06-03-2007 | Исправлено: NIKZZZZ, 16:14 06-03-2007
    xSabir

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите пожалуйста новичку. Есть такой батник:
    @echo off
    :_menu
    cls
    echo 1.New file 2.Edit file 3.View file 4.Delete string 5.Exit
    echo Enter action:
    set /p action=
     
    if /i "%action%"=="1" goto :_new
    if /i "%action%"=="2" goto :_edit
    if /i "%action%"=="3" goto :_view
    if /i "%action%"=="4" goto :_delstr
    if /i "%action%"=="5" goto :_exit
     
    :_new
    cls
    del x.txt
    copy con x.txt
    pause
    goto :_menu
     
    :_edit
    cls
    copy x.txt+con x.txt
    pause
    goto :_menu
     
    :_view
    cls
    more x.txt
    pause
    goto :_menu
     
    :_delstr
    cls
    set /a i=0
    for /F "usebackq delims==" %%i in ( x.txt ) do if not "%%i"=="" (
    set /a i+=1
    echo %%i
    )
    echo.
    echo In file x.txt %i% strings
    echo.
    set /p VarName=Enter number of string to delete:
    echo %VarName%
    pause
    goto :_menu
     
    :_exit
    cls
    pause
    goto :eof
     
    :eof
     
    Как можно в процедуре _delstr удалить строку под номером %VarName% из файла x.txt?

    Всего записей: 4 | Зарегистр. 06-03-2007 | Отправлено: 16:18 06-03-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru