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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    king_stiven

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

    Цитата:
    в принцепи нужно лишь как определить если в папе какие файлы...  

    В шапке ищи.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:31 12-12-2008
    vtornik12

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

    Всего записей: 4 | Зарегистр. 11-12-2008 | Отправлено: 16:52 12-12-2008
    Elroir



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

    Цитата:
    батник который бы удалял все файлы с определенным расширением например *.txt в указанной папке и всех ее подпапках !


    Код:
     
    del /s /q c:\temp\*.txt  
     

    Удаляет все файлы с расширением txt из папки c:\temp и всех ее подпапок.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:01 12-12-2008
    vtornik12

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

    Всего записей: 4 | Зарегистр. 11-12-2008 | Отправлено: 17:03 12-12-2008
    Elroir



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

    Цитата:
    как определить если в папе какие файлы


    Код:
     
    dir *.* /a-d>nul 2>&1
    if errorlevel 1 (
    echo No files) else (
    echo Files exist
    )
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:08 12-12-2008
    CryoGen



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

    Всего записей: 36 | Зарегистр. 11-12-2008 | Отправлено: 17:08 12-12-2008
    Elroir



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

    Цитата:
    можно както реализовать установку  одним кликом?

    Можно:

    Код:
     
    @echo off
    start /wait "" "C:\Install\setup1.exe"
    start /wait "" "C:\Install\setup2.exe"
    start /wait "" "C:\Install\setup3.exe"
    start /wait "" "C:\Install\setup4.exe"
    start /wait "" "C:\Install\setup5.exe"
     

     

    Цитата:
    а книженция есть по созданию  бат файлов?

    Посмотри в шапке, в разделе "Полезные ссылки"

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:12 12-12-2008
    corsik



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа умные сис. админы и програмеры.
    подскажите как написал батник который будет в папке например c:\distr перебирать файлы с расширение .exe и устанавливать с определеным ключем в папке наприме с:\test  

    Всего записей: 25 | Зарегистр. 25-04-2008 | Отправлено: 00:30 13-12-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    corsik
    Приведи пример, хотя бы на одном экзешнике (строку запуска этого файла).

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:00 13-12-2008
    AvgustiN



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

    Всего записей: 84 | Зарегистр. 04-11-2006 | Отправлено: 12:24 13-12-2008 | Исправлено: AvgustiN, 12:25 13-12-2008
    mike345S



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AvgustiN,
    Ну если про выполнение действий в зависимости от доступности сервера, то можно примерно так:
     
    if exist W:\marker.file W:\prog.exe
    if not exist W:\marker.file C:\prog.exe
     
    либо через обработку вывода ошибок ping можно попробывать, но это надо посмотреть что ping возвращает...
     
     
    Добавлено:
    Где marker.file - маркерный файл, в зависимости от доступности которого и выполняется prog.exe либо с сетевого диска, либо с локального...

    Всего записей: 550 | Зарегистр. 31-01-2006 | Отправлено: 14:38 13-12-2008
    OLEHbKA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как в этом бат файле:  
     
    rem настройки архиватора
    set a_opt=a -ac -ag -cfg- -dh -ep2 -m5 -mdg -r0 -rr10%% -s -idp
    set a_files=@C:\backup\backup_add.txt
    set a_out=C:\backup_out\backup_full_
    set a_log=c:\backup_out\backup_log.txt
    del %a_log%
    md "%a_out%"
    rem запуск архиватора
    "C:\Program Files\WinRAR\Rar.exe" %a_opt% %a_out% %a_files% >%a_log%
    rem сохранение архива в надёжном месте
    cscript c:\backup\backup.vbs %a_log%
    exit
     
    изменить set a_files=@C:\backup\backup_add.txt  на то,чтобы нужные файлы архивировались не по текстовому документу, а любой выбранной папке..??  

    Всего записей: 7 | Зарегистр. 24-11-2008 | Отправлено: 09:16 14-12-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    OLEHbKA
    set "a_dir=C:\backup"
    "C:\Program Files\WinRAR\Rar.exe" %a_opt% %a_out% "%a_dir%" >%a_log%
     
    Добавлено:
    полное исправление
     
    rem настройки архиватора  
    set a_opt=a -ac -ag -cfg- -dh -ep2 -m5 -mdg -r0 -rr10%% -s -idp  
    set "a_dir=c:\backup"
    set a_out=c:\backup_out\backup_full_  
    set a_log=c:\backup_out\backup_log.txt  
    del %a_log%  
    md "%a_out%"  
    rem запуск архиватора  
    "%programfiles%\winrar\rar" %a_opt% %a_out% "%a_dir%">%a_log%
    rem сохранение архива в надёжном месте  
    cscript c:\backup\backup.vbs %a_log%

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:33 14-12-2008 | Исправлено: Nagual, 12:47 14-12-2008
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Можно ли с помощью батника произвести поиск конкретного файла на диске?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:45 14-12-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Можно. Даже просто из командной строки.
     
    Например находим Far.exe на текущем диске:

    Код:
     
    dir /b /s /a \Far.exe
     

     
    PS. В данном примере ключ /a необязателен.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:52 14-12-2008 | Исправлено: 01MDM, 14:53 14-12-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как сделать замену текста в виде шестнадцатеричных значений.
    К примеру:
    Цитата:
    @echo off
     
    SET N=4E
    SET T=54
    SET L=4C
    SET D=44
    SET R=52
    SET I=49
    SET M=4D
     
    DEL list1.txt
    echo FILE   = B1.bin>>list1.txt
    echo TTL    = Replace>>list1.txt
    echo SEARCH = %N% 0 %T% 0 %L% 0 %D% 0 %R%>>list1.txt
    echo CHANGE = %I% 0 %M% 0 %L% 0 %D% 0 %R%>>list1.txt
    echo SEARCH = %N% %T% %L% %D% %R%>>list1.txt
    echo CHANGE = %I% %M% %L% %D% %R%>>list1.txt
     
    MKBT.EXE -x -c C: PEBOOT.BIN
    REN peboot.bin B1.bin
    Replace.exe /p list1.txt
    RD OUT1 /S /Q
    MD OUT1
    MOVE B1.bin OUT1\B1.bin
    pause
    здесь поиск и замена текста в файле загрузочного сектора, хочу сделать в виде выбора или в виде ввода текста -
    Цитата:
    set /p ldr=“Є ¦ЁвҐ Ё¬п «® ¤Ґа  (5 бЁ¬ў®«®ў), - ЇаЁ¬Ґа PELDR
    , но как это передать в строку "echo SEARCH = " в шестнадцатеричном виде.
     
    Добавлено:
    Посмотрел "Конвертирование текста из кириллицы в латиницу", похоже мне это нужно, только создать дла англ. алфавита в шестнадцатеричные коды.
     
    Добавлено:
    Сделал такой код Подробнее... но проблема в том, что шестнадцатеричные символы тоже содержат символы алфавита, и обрабатываются дважды, в итоге шестнадцатеричный код не верен при передаче в строку "echo SEARCH"
     
    Добавлено:
    сделал... вот , как оказалось прописные и заглавные буквы обрабатываются одинаково.
     
    Добавлено:
    Подскажите как сделать если количество введённых символов не равно 5-ти, то выдать сообщенние о неправильном вводе и вернуться снова к строке ввода переменной...
     
    Если кому интересно, вот архив 75 кб с батниками и необходимыми файлами.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 21:59 14-12-2008 | Исправлено: AZJIO, 15:18 15-12-2008
    GRom V

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

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 03:27 15-12-2008
    soulthiefer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    СПАСИБО огромное все работает!!! оч выручил

    Всего записей: 40 | Зарегистр. 11-07-2006 | Отправлено: 09:01 15-12-2008
    perzend

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Ну вот что у меня получилось.
     
    cls
    @echo off
    setlocal enabledelayedexpansion
     
    for /r d:\spb\tmp %%i in (.) do (    
       if exist %%i\*.exe (
          set FEL=%%i
          call :tyu
       )
    )
    goto :eof
    :tyu
    for /f "tokens=*" %%k in ('dir !FEL! /b /a:d') do goto :yui
    echo %FEL%>>d:\spb\tmp\k.txt
    :yui
     
    Программа работает, но все же не на 100%. Я думаю нужно добавить проверку существования файла *.exe. Примерно во так.
    :tyu
    for /f "tokens=*" %%k in ('dir !FEL! /b /a:d') do (
       if exist *.exe echo %%k>>d:\spb\tmp\k.txt
       goto :yui
    )
    echo %FEL%>>d:\spb\tmp\k.txt
    :yui
    То есть получается, что мы искали самый глубоко вложенный каталог, но забывали проверять есть ли в каждом из них искомый файл.

    Всего записей: 7 | Зарегистр. 05-12-2008 | Отправлено: 10:10 15-12-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    perzend
    setlocal enabledelayedexpansion здесь лишнее, но ошибки давать не будет, дело хозяйское.

    Цитата:
    for /f "tokens=*" %%k in ('dir !FEL! /b /a:d') do (  
       if exist *.exe  

    Ошибка, в dir задаёшь поиск каталогов а if хочешь проверить файл.
    Вот так попробуй

    Код:
    FOR /R %%k IN (.) DO (
        set p=%%k
        if exist "%%k\*.txt" set peremennay=%%k
        call :tyu
    )
    pause
    :tyu
    for /f "tokens=*" %%c in ('dir "%p%" /b /a:d') do goto :yui
    if defined peremennay echo %peremennay%>>1.txt
    set peremennay=
    :yui

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:34 15-12-2008 | Исправлено: king_stiven, 11:15 15-12-2008
       

    Страницы: 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-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru