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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:51 24-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, а батник:
    Код:
    @echo off
    chcp 1251 > nul
    for %%e in ("XYZ\*.xyz" "XYZ\*.xyz") do del "%%e" /q
    удаляет скрытые и/или архивные и/или только для чтения файлы? И удаляет ли он файлы в скрытых папках?
     
    P.S.
    Скажите, а что нужно для того чтоб юзер не смог закрыть окно батника (даже через диспетчер задач)?

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 23:29 24-01-2008 | Исправлено: Grim_Repo, 23:38 24-01-2008
    Elroir



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

    Цитата:
    удаляет скрытые и/или архивные и/или только для чтения файлы? И удаляет ли он файлы в скрытых папках?

    Нет и да и нет. Да. (del /?)

    Цитата:
    Скажите, а что нужно для того чтоб юзер не смог закрыть окно батника (даже через диспетчер задач)?

    Не давать юзеру администраторских привилегий и запускать батник от имени администратора.
     
    P.S. Было бы не плохо, если бы ты, все-таки, почитал справку по командам и/или простейшие пояснения в интернете, по работе с командной строкой.

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

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    PuzzleW
     
    Задача была такова !  
    1) есть список компов которых нужно пропинговать и вследствии этого узнать кои из них живые ! Список 400 строк.
    2) есть несколько решений ( ну на любителя )  
           а) FOR      /F "eol=; tokens=1" %%i in (1.txt) do ping -n 1 %%i | find "TTL=" && echo %%i >> c:\temp\pinguetsya.txt ( работает быстро  )
           б) @echo on
    setlocal
    for /f %%i in (list.txt) do call:_ping %%i
    goto:eof
    :_ping
    for /f "tokens=2 delims=[]" %%i in ('ping %1 ^| findstr %1') do (
        echo %1 %%i 1>>list_after.txt && set flag=1
    )
    if not defined flag echo %1 is dead 1>list_after.txt
    set flag= ( работает по медленние + выдает и iP  машин  )
    3) Задача уже решенна , но я нашел еще способ выгрузить список компов в сети через net view >> new_list.txt а затем сравнить значения двух файлов.
     
    Вот и всё !
     
    Изложил по мой му понятно .

    Всего записей: 44 | Зарегистр. 29-05-2006 | Отправлено: 05:45 25-01-2008
    gamers_hater

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здрасте!
    Есть куча файлов EX_ или DL_ в директории (i386)
    Нужно написать батник со следующим алгоритмом:
     
    1)найти следующий файл с расширением EX_ или DL_
    2)если размер файла < 10 кб, переходим к пункту 1. (то-есть ищим следующий файл)
    3)распаковать найденный файл во временный каталог (для распаковки использовать коммандную строку: "EXPAND -r имя_файла имя_папки")
    4)упаковать файл с помощью UPX (ком. строка: "UPX -9 --force имя_файла")
    5)упаковать файл в CAB (ком. строка: "MAKECAB имя_файла /L имя_папки")
    6)заменить получившимся файлом тот файл, который мы нашли в пункте 1.
    7)переходим к пункту 1.
     
    Думаю, что объяснил более чем понятно.
     
    Зарание спасибо!

    Всего записей: 81 | Зарегистр. 02-12-2007 | Отправлено: 08:02 25-01-2008
    01MDM



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

    Цитата:
    работает по медленние

    Я сразу написал, что параметры ping можешь выставить на свое усмотрение.
    Попробуй ping -n 1
     
    И

    Цитата:
    if not defined flag echo %1 is dead 1>list_after.txt  

    1>>list_after.txt - у меня было так
     
    С net view. Проверь, самому негде

    Код:
     
    @echo off
    for /f "tokens=1 delims=\ " %%i in ('net view ^| findstr "\\"') do (
        echo %%i 1>>new_list.tmp
    )
    for /f %%i in (list.txt) do (
        findstr %%i new_list.tmp 1>nul 2>&1 && (
                 echo %%i 1>>new_list.txt) || (
                 echo %%i is unavailable 1>>new_list.txt
            )
    )
    del new_list.tmp
     
     

     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:59 25-01-2008 | Исправлено: 01MDM, 09:24 25-01-2008
    Smitis



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

    Цитата:
    Есть куча файлов EX_ или DL_ в директории (i386)  
    Нужно написать батник со следующим алгоритмом:  

    Если ты таким образом хочешь уменьшить размер винды после установки, то лучше не майся дурью. Ни к чему хорошему это не приведёт. Добрый совет, типа

    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 12:35 25-01-2008
    gamers_hater

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    эт смотря какие файлы сжимать, категорически нельзя: kernel32.dll, ntdll.dll, gdi32.dll, user32.dll ну и ещё парочку (т.к. 1) они отвечают за загрузку системы 2) их юзает сам UPX), а все остальное - можно, уже проверял, правда вручную - запарюсь их паковать =(
     
    ЗЫ
     
    вопрос остается в силе, единственная поправка - проверить, не яв-ся-ли файл одним из перечисленных выше.

    Всего записей: 81 | Зарегистр. 02-12-2007 | Отправлено: 13:06 25-01-2008
    SymA



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

    Цитата:
    SymA  
    я тоже не силен    
     
    ты имеешь в виду открыть папку в Windows Explorer'e?

     

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 14:04 25-01-2008
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как добавить ключи в реестр с помощью батника?
     
     
    Добавлено:
    Спасибо вроде разобрался
    start/wait regedit -s имя_файла.reg  

    Всего записей: 3378 | Зарегистр. 20-05-2006 | Отправлено: 14:08 25-01-2008
    Smitis



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    gamers_hater
    dll-ки вообще сжимать не рекомендуется. Т.е. можно, но это приведёт к повышеному расходу памяти приложениями.
    А цикл простой:

    Код:
     
    @echo off
    for %%f in (*.dl_ *.ex_) do if %%~zf geq 10000 call :uuu "%%~f"
    goto:eof
     
    :uuu
    echo %~1
    :: Сдесь распаковываем/упаковываем
     


    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 14:31 25-01-2008
    PashaV0607

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста!!!  
    есть такая проблема, нужно проверить есть ли папка в каталоге. Название папки меняется ежедневно.  
     
    необходимо проверить есть ли папка ХХХХ в каталоге с:\ttt\ и если есть делать какие то действия.  
     
     
    конкретнее если есть папка ХХХХ в каталоге с:\ttt\ то делаем ее копию в другое место.
     
    Спасибо заранее!!!

    Всего записей: 2 | Зарегистр. 25-01-2008 | Отправлено: 16:08 25-01-2008
    01MDM



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

    Цитата:
     
    Название папки меняется ежедневно.  
    необходимо проверить есть ли папка ХХХХ в каталоге с:\ttt\
     

    Как понял, в каталоге нужно проверить появилась папка с произвольным названием или нет.
    Если там больше нет других папок, то

    Код:
     
    @echo off
    setlocal
    for /d %%i in ("C:\ttt\*") do set "folder=%%~nxi"
    if defined folder (
        md "C:\Path\%folder%"
        xcopy /e "C:\ttt\%folder%" "C:\Path\%folder%\"
    )
     

    C:\Path это куда надо скопировать.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:32 25-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PashaV0607
    01MDM
     
    можно и сразу, то есть без создания set "folder=%%~nxi"
     

    Код:
    for /d %%i in ("C:\ttt\*") do xcopy "%%i" "куда копируем"

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:35 25-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Можно просто, если в ttt нет файлов  

    Код:
     
    xcopy /e C:\ttt "куда надо\"
     

    Но нам ведь бумаги не жалко
     
    %folder%, чтобы создать папку куда копировать

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:58 25-01-2008 | Исправлено: 01MDM, 20:00 25-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    А в задаче не сказано. что нужно создавать папку
    А если и надо, то

    Код:
    for /d %%i in ("C:\ttt\*") do xcopy "%%i" "C:\Path\%%~ni\" /i /e

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:43 25-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Я не подумал, что xcopy сама создаст папку, почти не пользуюсь  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:29 25-01-2008
    gamers_hater

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

    Цитата:
    :: Сдесь распаковываем/упаковываем

    тут вопрос.
    Например, распакованный (из CAB) файл имеет уже расширение не EX_, а EXE, как мне получить его имя, чтоб передать в параметр UPX'у?

    Всего записей: 81 | Зарегистр. 02-12-2007 | Отправлено: 11:30 26-01-2008
    AndryG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток.
    Затык с ARJ32.exe  
     Нужно батником раскрывать архивы ... и не могу избавится от вопросов архиватора при выполнении.
     
     В справке нашел как забить только ответ ДА  
        (ключ -jyo -- "Переписать файл? -> ДА")
     А вот с "Путь не существует, создать папку?" надо отвечать "ВЫХОД"
     
     Вроде сделал, но так коряво:
     
       type %~dp0util\reply_q|arj32.exe e -jyo n:\nbu\appl\rcukru.arj rcukru.dbf -ht%new_stat_dir%\kod_form\  
     
     В файле Q и "Enter"
     
     А хочется красивое решение  Подскажите, пжлст, с ключами архиватора, пжлст
     

    Всего записей: 26 | Зарегистр. 07-09-2007 | Отправлено: 11:42 26-01-2008
    MsdLamer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте мастера. Помогите с проблемкой... У меня на работе на компе лежит база которую надо копировать раз в день.... я написал батничек и вот что получилось.
     
    set d=%date:~0,2%
    set m=%date:~3,2%
    set y=%date:~6,4%
    MD C:\Archive_TDSM\
    MD C:\Archive_TDSM\Archive_TDSM_%date%
    XCOPY/E /C "C:\TDSM\*.*" "C:\Archive_TDSM\Archive_TDSM_%date%"
     
     
    я не профи так что это может показаться глупо..... но работает же....
     
    итак создается попочка с текущей датой и туда копируется база, мне нужно хранить базу за последние три дня, можно ли сделать так чтобы хранились папочки только за последние три дня а остальные предыдущие архивы удалялись....
     
    СПАСИБО.

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 11:42 26-01-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 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru