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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    абсолютно согласен, винрар для этой задачи выглядит намного логичнее, раньше тоже пользовал резаком тотала, пока не узнал, что винрар это тоже умеет делать, а главное, поскольку винрар чаще найдешь на разных тачках, чем тотал, то и универсальность метода, использующего винрар, выше.
    Здесь хочу укзать еще одно немаловажное преимущество винрара, то, что он еще и жмет файл, уменьшая его в размерах
     
    насчет проигрывания звука:
    как оказалось, надо пользовать библиотеку winmm.dll
    на INNO это делается так:
     
    ***
    [Code]
    function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
    external 'sndPlaySoundA@winmm.dll stdcall';
    procedure InitializeWizard();
    begin
      sndPlaySound(ExpandConstant('дзинь.wav'), $0001);
    end;
    ***
    ну а в принципе, это и надо было делать в инсталляхе

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:00 15-03-2007 | Исправлено: Nagual, 15:08 15-03-2007
    FXPELIVE

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите доработать мой пакетник Оптимизировать ХРюшку.bat(под Windows XP SP2):

    Код:
    @echo off
    color f0
    title ...
    echo Оптимизация системы...
     
    echo дефрагментация диска...
    echo C:
    defrag C: -v >nul
    echo D:
    defrag D: -v >nul
     
    echo для ускорения загрузки Windows и запуска самой активной части приложений
    %windir%\system32\Rundll32.exe advapi32.dll,ProcessIdleTasks
     
    echo удаление выборок
    del /f /q /s "C:\WINDOWS\Prefetch\*.*"
     
    pause

    Надо добавить возможность запуска строго через месяц (можно использовать переменную %date%) и желательно после/перед каждым запуском прописывал текущую дату в файл, считывал с файла и сравнивал с текущей и в случае несовпадения выдавал сообщение.

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 19:12 15-03-2007
    ElCoyote

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет.  
    У меня на компах при входе в учетную запись срабатывает bat-файл из автозагрузки, он делает архивную копию файлов. Так вот, когда юзеры заходят в свою учетную запись, выскакивает консольное окошко, а это !@#ные юзеры сразу тыкают на крестик! Соответственно копирования не происходит.  
    Как можно скрыть работу таких пакетных файлов?  
    Где-то прочитал, что можно сделать так:  
    my_file.bat>NULL  
    Но так создается файл NULL, куда пишется вся инфа о работе пакетника...

    Всего записей: 182 | Зарегистр. 07-04-2006 | Отправлено: 21:54 15-03-2007
    Elroir



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

    Цитата:
    Где-то прочитал, что можно сделать так: my_file.bat>NULL

    Это не поможет - ">NUL" скрывает вывод текста, но не само окно.
    Посмотри cmdow — изменение параметров и видимости дос-окна (шапка->Полезные ссылки).
     
    Tipulatoid

    Цитата:
    Крутой код

    Спасибо!

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:55 15-03-2007 | Исправлено: Elroir, 22:55 15-03-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FXPELIVE
    А не проще ли использовать Службу расписаний? Наберите at /? для справки.

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 23:23 15-03-2007
    Desark

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, мне нужен bat который бы архивировал файлы (*10.002; *.*; в зависимости как настроишь, но пропуска *.arj) в архив [дата на момент создания].arj и удалял исходные, архив должен быть в тойже папке. Заранее спасибо.
    ЗЫ: подскажите где можно найти команды и листинг по написанию bat - ов, в формате для печати.

    Всего записей: 2 | Зарегистр. 15-03-2007 | Отправлено: 08:45 16-03-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как решить такую задачу. Нужно в текстовый файл (KOI-8) вставить в определенное место необходимый текст с помощью батника. Делаю так:
    Код:
    for /f "eol=c tokens=1 usebackq delims=|" %%i in ("%~1") do (
    IF "%%i"==";!@InstallEnd@!" echo ;This is "My text">>config.txt
    echo %%i>>config.txt
    )
     
    В переменной %~1 путь и имя исходного файла, ";!@InstallEnd@!" - сигнатура конца файла конфигурации перед которой мне и нужно вставить мой текст. delims=| взять от балды, но если его не указывать, то обрезаются все после пробелов.  
    Это работает, но:
    1 Удаляет все пустые строки имеющиеся в исходном файле
    2 Если в исходном файле имеются спец. символы (0CH, например), то они заменяются незнамо чем
    Код:
     뢮   ࠭ (ECHO) ⪫祭.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 11:43 16-03-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Desark
    По ARJ
    ARJ m Archive_  *.* -x*.arj -h#
     
    По батничкам
    именно эта тема и её шапка

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:57 16-03-2007
    igor_andreev

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

    Цитата:
    Это работает, но:  
    1 Удаляет все пустые строки имеющиеся в исходном файле  
    2 Если в исходном файле имеются спец. символы (0CH, например), то они заменяются незнамо чем

    А VBScript учите, пригодится... (С) Кузьмич, "Особенности национальной рыбалки"

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 13:13 16-03-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GORA2
    Добавлю к igor_andreev или PowerShell

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:43 16-03-2007
    Desark

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спс все работает.
    Единственное, скоппировал в туже папку "ARJ.EXE", без него работать не хотел и добавил пути.
    ARJ m Archive_  с:\temp\*.* -x*.arj -h#
    move *.arj c:\temp\

    Всего записей: 2 | Зарегистр. 15-03-2007 | Отправлено: 14:26 16-03-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Desark
    Добавь ARJ в папку которая находится в переменной Path

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:38 16-03-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    KapralBel
    А ветка как называется? А?
    Лозунги нашего вождя "Учиться, учиться..." мне известны, а по существу вопроса, что то можете сказать?

    ----------
    LonerDergunov - павлуша дергунов - ВОР!

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 15:32 16-03-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GORA2
    Поверь
    не все можно сделать на батничках
    или скажем так
    То что решается на VBS и PowerShell за 2-3 минуты и в 5 строк
    то на батничках надо затратить кучу времени и с особыми хитростями (сторонними программами)
    Так что надо для каждой задачи выбирать соответсвующий инструмент

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:49 16-03-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Desark
    Запоздало, но всё таки...Написал, как смог , в общем копируешь код в батник, батник называешь, скажем "ARJCMD.bat", кидаешь этот батник и консольную версию ARJ.exe в папку с файлами, которые нужно архивировать, имена архивов будут такие "16032007" и т.д. по дате вобщем
     

    Код:
     
    @Echo off
    Set dat=%date:.=%
    Dir /b | Find /i /v "arj" >> arjtmp.txt
    For /F %%i in (arjtmp.txt) do (
    Arj.exe a -e %dat% %%i
    Del /q /f %%i)
    Del /q arjtmp.txt
     

     
    FXPELIVE
    Tipulatoid

    Цитата:
    А не проще ли использовать Службу расписаний? Наберите at /? для справки.

    Тогда уж лучше Schtasks /? намного гибче
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:54 16-03-2007
    igor_andreev

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

    Цитата:
     по существу вопроса, что то можете сказать?
    Команда FOR никак не воспринимает пустые строки при чтении построчно текстовых файлов, это общеизвестно.  
     
    Спецсимволы - тут тоже тяжко бывает иногда , все таки язык бат-файлов это не полноценный язык программирования, он изначально задумывался(шут знает когда, винды тогда точно еще не было) больше как доступное всем средство автоматизации(запуск программ и т.п.), но уж точно не как способ для любого сложного разбора текста.  
     
    То, что народ изгаляется и придумывает всякие фокусы с батниками - это обусловлено доступность написания батников, ваяешь себе в блокноте, не надо никаких компиляторов и тп. и тем, что воспроизвести можно на практически любой версии Windows. Ограничения командных файлов Microsoft ессно известны и поэтому появились vbscript и powershell. Думаешь программисты у Билла Гейтса - страдающие от безделья дурачки и встроили vbscript в ОС просто так, времени свободного много, делать все-равно нефих...? Неа, эт язык уже более высокого уровня.
     
    Добавлено:
    Maza Faka

    Цитата:
    Set dat=%date:.=%

    Да это в общем то не нужно, arj32 сам хорошо добавляет к имени архива дату-время как пользователю надо. Есть у него ключи для этого(аналог -ag у WinRAR), см. пример KapralBel
    Цитата:
     h#: append date string to name
    h#1: append time string to name
    h#2: append DHHMMSS to name

    Можно любые конструкции использовать, типа -h#_YYYY-DD-MM_hh-mm-ss  
     
     
     
    Добавлено:
    Хотя нее, не любые Сейчас попробовал, arj 3.10 с arj.sourceforge.net спокойно проглотил -h#_YYYY-DD-MM_hh-mm-ss, а "оригинальный" arj 3.14 взбрыкнул - Invalid swith. А в arj для DOS этого ключа -h# кажется вообще нет(ну он, 16-битный и не нужен под виндой)

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:09 16-03-2007 | Исправлено: igor_andreev, 16:51 16-03-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    По поводу PowerShell, можешь дать ссылки, где почитать, что это такое?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 16:54 16-03-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    Тут же на форуме
    PowerShell
     
    Добавлено:
    http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
     
    Добавлено:
    http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:04 16-03-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый день всем
     
    подскажите пожалуйста
    1.cmd

    Код:
    del /q c:\1\a.txt

    если a.txt существует, получаем succesfful
    если его нет то получаем failed
    (это приходит в репорты программы которая запускает этот cmd)
    как правильно сделать проверку на присутствие и если есть то удалить, если нет то ничего не делать
    чтобы не получать ошбку
    заранее благодарен

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 11:58 17-03-2007 | Исправлено: JohnRD, 11:59 17-03-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    if exist "c:\1\a.txt" del /q "c:\1\a.txt"

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 12:04 17-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