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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые программисты, подскажите пожалуйста, как мне декодировать тучу файлов (музыка в беспотерьном формате tta), лежащих в разных папках в корне диска, формат папки типа "имя исполнителя - имя альбома" (). Нужно получить файлы с расширением *.wav. Сейчас тупо копирую программу-декодер ttaenc.exe в корень каждой папки и запускаю из под Far-a с ключами "ttaenc.exe -d -u" (d - декодирование из tta в wav, u - удаление исходного файла *.tta) Наверное как то можно автоматизировать сей процесс, а то папок более 500 и занятие это доолгое...

    Всего записей: 2 | Зарегистр. 27-01-2006 | Отправлено: 14:14 19-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как я понял полная команда для декодирования: ttaenc.exe -d -u имя_файла.tta? Тогда:
    Код:
    FOR /r %%i IN (*.tta) DO ttaenc.exe -d -u %%i
    Притом ttaenc.exe помещаем в папку прописанную в путях - например %SystemRoot%. Ну либо пишем запуск с полным путем...

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 14:25 19-01-2007
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set root=c:\
    for /r %root% %%a in (*.tta) do (
    ttaenc.exe -d -u "%%a" "%%~dpa%"
    )
     

    В выделенной строчке, меняешь C:\ на свой диск.
     
    Добавлено:
    Батник должен быть в одной директорие с ttaenc.exe.
     
    Добавлено:
    yurkesha
    Опередил.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:35 19-01-2007
    Wise_Kaa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. Может подскажет кто:  
    1) как запустить задачу из-под другого пользователя с помощью runas без ввода пароля? Т.е. ситуация такая: есть юзер с именем user1, у него пароль userpassword, надо запустить, к примеру, командную строку из под-учетной записи этого пользователя. Основное требование: никакие пароли вручную вводиться не должны.
    такая команда  
    runas /user:user1 cmd.exe <pass.txt  
    не работает (предполагалось, что пароль будет браться из файла pass.txt).
    2) Есть такая программка reg.exe, позволяющая работать с реестром из командной строки. После того, как она отработала, пишется сообщение о ошибке или о успешном завершении операции. Я эти сообщения перенаправляю в текстовый файл. Только они почему-то перенаправляются в кодировке не ДОСа, а windows. В результате в текстовом файле получается символы с разными кодировками, что, согласитесь, не очень удобно. Как обойти такую проблему?
    Заранее спасибо.

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 17:03 19-01-2007
    nopy4uk

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    СПАСИБО ребята!!!  
    Щас проверил на одной папке - все работает!!!
    Класс!

    Цитата:
    @echo off  
    setlocal  
    set root=c:\  
    for /r %root% %%a in (*.tta) do (  
    ttaenc.exe -d -u "%%a" "%%~dpa%"  
    )

     
     
    Добавлено:
    Только почему то файлы *.wav все перемещаются в папку C:\WINDOWS\system32 ??

    Цитата:
    Щас проверил на одной папке - все работает!!!


    Всего записей: 2 | Зарегистр. 27-01-2006 | Отправлено: 18:12 19-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nopy4uk
    Очень капризная программа в отношении пути вывода.
    Немного переделал код:

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set root=c:\
    for /r %root% %%a in (*.tta) do (
    set outp=%%~dpa
    set outp=!outp:~0,-1!
    ttaenc.exe -d -u "%%a" "!outp!"\  
    )  
     

    Не надо запускать в каждой директории по отдельности - батник проходится по всем директориям на диске, который ты указываешь.
    P.S Я в прошлой версии лишний занчок "%" в последней строчке написал

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:07 19-01-2007 | Исправлено: Elroir, 21:09 19-01-2007
    Elroir



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

    Цитата:
    1) как запустить задачу из-под другого пользователя с помощью runas без ввода пароля?

    http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=1780#13

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:14 19-01-2007
    Wise_Kaa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1)
    Цитата:
    http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=1780#13

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

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 00:38 20-01-2007
    Elroir



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

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

    Стандартный runas не поддерживает такую опцию. В сети можно найти несколько утилит (в том числе улучшенный runas), которые позволяют вводить пассворд, как аргумент.
     

    Цитата:
    2) а что по второму вопросу? никто не подскажет?

    Насколько я знаю, если программа выводут текст в какой-то определенной кодировке - ее невозможно изменить. А что кроме вывода reg.exe записывается в файл?
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:08 20-01-2007
    Wise_Kaa



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

    Цитата:
    Стандартный runas не поддерживает такую опцию. В сети можно найти несколько утилит (в том числе улучшенный runas), которые позволяют вводить пассворд, как аргумент.  

    Спасибо за разъяснения, хоть не буду искать несуществующее.
     

    Цитата:
    А что кроме вывода reg.exe записывается в файл?  

    Да много чего пишется, просто создается лог-файл, с комментариями, с сообщениями от других программ. И всю эту идилию нарушает другая кодировка reg.exe

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 01:22 20-01-2007 | Исправлено: Wise_Kaa, 01:25 20-01-2007
    Higher



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

    Всего записей: 1986 | Зарегистр. 08-10-2003 | Отправлено: 07:51 20-01-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wise_Kaa
    У меня как-то давно всплыла похожая задача(разные кодировки), что-то там ни на что не реагировало и портило картину лога. Я тогда в конце батника вставил:  
    xcode log.txt log.txt
    Xcode тут. А года два назад на английскую винду совсем перешел, тут все красиво, по-английски

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 08:03 20-01-2007 | Исправлено: igor_andreev, 08:06 20-01-2007
    royt

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли (и как) из командной строки изменить MAC-адрес сетевой карты? Точнее, имеются ли в винде штатные (!) команды или программы, с помощью которых можно изменить MAC?
    Для XP SP2, 2003.
     
    Вопрос мною уже был детально изучен - где хранятся настройки в реестре и как их менять. Но процедура поиска нужного ключа в реестре и изменения значения уж слишком хитра, чтобы реализовывать ее батником. Для изменения MAC-а предлагается воспользоваться сторонними программками (например, macshift и SMAC). Но хотелось бы найти штатные средства.
     
    У netsh есть недокументированные параметры командной строки. Может для нее существуют команда для изменения MAC-а?

    Всего записей: 319 | Зарегистр. 18-08-2004 | Отправлено: 15:35 20-01-2007
    Wise_Kaa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо, но к сожалению мне такой вариант не очень подходит, хотелось бы обойтись стандартными средствами, которые есть в Win XP

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 21:05 20-01-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    royt
    Wise_Kaa
    А с чем связано ваше нежелание использовать сторонние утилиты, можно поинтересоваться? Если возможностей винды не хватает, то что такого, чтобы добавить пару-тройку консольных утилит? Все равно ведь устанавливаете  программы, которых нет в Windows, а-ля файл-менеджер, архиватор и т.п.  
     
    У меня есть папка на несистемном диске, D:\BIN - в ней 600 с гаком консольных утилит, которых нет в стандартной поставке Windows. При перестановке винды просто добавляю ее в PATH и вуаля, комфортная работа мне обеспечена.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 00:08 21-01-2007 | Исправлено: igor_andreev, 00:10 21-01-2007
    Wise_Kaa



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

    Цитата:
    У меня есть папка на несистемном диске

    Вот именно, у Вас. На своем собственном компьютере я тоже пользуюсь не интернет эксплорером, и не медиа-плеером.  Но мне батник этот прийдется запускать неизвестно где, и, возможно, буду запускать его даже не я, по этому чем меньше в нем будет использоваться утилит от сторонних производителей, тем лучше (по почте отошлешь: там фаервол чего зарубит, там антивир, потом удаленно сложновато разбираться чего именно уже не хватает)

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 12:44 21-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тогда как вариант можно использовать следующую схему:  
    созданный скрипт вместе с нужными утилитами помещается в SFX-архив с silent-распаковкой во временную папку и запуском скрипта после распаковки - главное учитывать при создании скрипта, что надо работать только с относительными путями и стандартными переменными окружения...

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 12:56 21-01-2007
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот что мне выдаёт этот скрипт.

    Цитата:
    C:\windows>FOR /F "usebackq tokens=1 eol= skip=1 delims= " %a IN (`help|findstr
    /B /V /C:" "`) DO help %a  1>>%a.txt
    Попытка записи в несуществующий канал.
    Синтаксическая ошибка в имени файла, имени папки или метке тома.
    Процесс не может получить доступ к файлу, так как этот файл занят другим процесс
    ом.

    А как я понимаю должен появится файл с описанием всех команд.
    Я на другом форуме нашёл скрипт создания бэкапа, в котором раз в неделю копируется нужный файл, ну типа этого, но здесь я переделал для временных скачанных архивов.

    Цитата:
    del /q temporarily7.rar
    ren temporarily6.rar temporarily7.rar
    ren temporarily5.rar temporarily6.rar
    ren temporarily4.rar temporarily5.rar
    ren temporarily3.rar temporarily4.rar
    ren temporarily2.rar temporarily3.rar
    ren temporarily1.rar temporarily2.rar
    ren temporarily.rar temporarily1.rar
    ren .rar[1] temporarily.rar
    start temporarily.rar

    Можно ли сделать так, чтоб файлы не удалялись после 7 архива, а вместо имени была дата создания архива, то есть ".rar[1]" переименовывался в файл, например 0.26.13.22.01.2007.rar (часы.минуты.секунды.день.месяц.год)

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 22:31 21-01-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO для выполнения данного скрипта надо создать пакетный (cmd либо bat) файл и в него записать данную команду. К тому же лучше не запускать его внутри папки виндов особенно с правами ограниченного пользователя...
    К тому же скрип такой:
    Код:
    FOR /F "usebackq tokens=1 eol= skip=1 delims= " %%a IN (`help^|findstr /B /V /C:" "`) DO help %%a >>%%a.txt

    Добавлено:
    По второму вопросу - у rar есть такой ключик:
    -ag+YYYY{_}MM{_}DD-NN
    то есть в данной ситуации - создастся архив вида 2007_01_21_01 - где последний 01 - это уникальный номер бэкапа за данное число (может быть от 01 до 99). Попробнее посмотри в справке - кажись там и минуты с секундами можно задействовать...
     
    Еще добавлено: к тому же никто не мешает воспользоваться значениями текущей даты и времени. Вот пример использования:
    Код:
    @echo off
    set curr_data=%DATE:.=_%
    echo Текущая дата %curr_data%
    set curr_time=%TIME::=_%
    set curr_time=%curr_time:~0,8%
    echo Текущее время %curr_time%
    в этом примере я предварительно символы '.' и ':' заменяю на '_' и из времени убираю сотые доли секунды...

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 22:38 21-01-2007 | Исправлено: yurkesha, 23:19 21-01-2007
    SGG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая штука: после распознавания програмой GOCR картинки, состоящей из 4-ех символов на выходе получается тесктовый файл с символами, изображенными на картинке.  
    Но иногда, в следствие распознавания картинки несоответствующего качества, текстовый файл может содержать символ подчеркивания вместо нераспознанных символов или между четырьмя распознанными вместо мнимого (предполагаемого пробела), или в конце (пятым символом).
    Еще бывают варинты, когда результат располагается в две строки - начало на второй, а окончание на первой строке (именно в таком порядке), причём количество символов в строках может "плавать", т.е. может быть 1-3, 2-2, 3-1 сиволов соответственно на первой и второй строке.
     
    Нужно, чтобы после обработки
    Цитата:
    B3_
    A1
    получался на выходе файл с таким содержимым (размер фала должен быть шесть байт - четыре символа + 0x0D + 0x0A):
     

    Цитата:
    A1B3
     

     
    Но у меня получилось сделать только так - четыре символа + пробел + 0x0D + 0x0A
    И то, если символы расположены на одной строке.
    То есть, после обработки такого
    Цитата:
    A1_B3_
     
    получается
    Цитата:
    A1B3  
     
    с пробелом в конце строки, а надо без пробела...  
     
    Наваял вот такое:

    Цитата:
    for /F "tokens=1,2,3,4 delims=_" %%i in (text.txt) do @echo %%i%%j%%k%%l > out.txt  

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

    Всего записей: 73 | Зарегистр. 23-12-2005 | Отправлено: 02:26 22-01-2007 | Исправлено: SGG, 02:35 22-01-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