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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с такой задачей  
     
    надо создать такой бат-файл (если такое возможно)!
     
    заходит на ftp://ftp.drweb.com/pub/drweb/cureit/cureit.exe  
     
    и сохраняет cureit.exe в локальную папку например D:\Antivirus

    Всего записей: 5 | Зарегистр. 31-03-2006 | Отправлено: 11:19 13-12-2007
    Ilyansk

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    создешь текстовый файл, например ftp.cms
    вставляешь туда
    Код:
    get  pub/drweb/cureit/cureit.exe d:\antivirus
    quit

     
    затем "варишь" батник get_web.bat
    Код:
    @echo off
    ftp -s:ftp.cms -A ftp.drweb.com

     
    вроде, фсё
    ...a, да!   ftp.cms кладешь рядом с батником (в одну папку)
    (еще в винде на рабочем столе действует F1, в поиске набираешь FTP и много интересного там есть)

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 14:26 13-12-2007 | Исправлено: Ilyansk, 14:31 13-12-2007
    vlasenkoa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to Ilyansk  
    Спасибо за помощь!
    Выдает ошибку: Ошибка при открытии локального файла d:\antivirus  
    > d:\antivirus : Отказано в разрешении
    права на папку стоят на полный доступ, - захожу под админом!
    В чем может быть проблема?

    Всего записей: 5 | Зарегистр. 31-03-2006 | Отправлено: 15:09 13-12-2007
    Booklet

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

    Всего записей: 741 | Зарегистр. 09-03-2006 | Отправлено: 16:42 13-12-2007
    AlexLev59

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, как написать команду FOR, чтобы командный файл прочитал из текстового файла список папок (каждая папка на отдельной строке, имена папок имеют пробелы), - требуется для автоматического создания каталогов.
    Спасибо.

    Всего записей: 113 | Зарегистр. 04-12-2006 | Отправлено: 17:10 13-12-2007
    Elroir



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

    Код:
     
    for /f "tokens=*" %%a in (folders.txt) do md "%%a"
     

     
    Добавлено:
    vlasenkoa
    Пропиши так:

    Код:
     
    get pub/drweb/cureit/cureit.exe d:\antivirus\cureit.exe
     



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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:48 13-12-2007 | Исправлено: Elroir, 17:54 13-12-2007
    KlimKlim



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    прочитал 2 первых части данного топика... набрался ума-разума.. но так и не осилил следующую задачу:
    Есть папка на сетевом диске M:\Dir\Dir1\ , в которой лежит пачка dll-ек и exe-шников, которые периодически обновляются.
    Есть папка на локальном диске C:\Rid\ap32\ с такой же пачкой dll-ek и exe-шников, в котору надо копировать только обновлённые файлы из M:\Dir\Dir1\.
     
    Файлов реально много, в целях снижения нагрузки на сеть надо копировать только те файлы, дата которых отличается... Поможите, пожалуйста

    Всего записей: 383 | Зарегистр. 23-03-2006 | Отправлено: 18:01 13-12-2007
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:46 13-12-2007
    Elisaveta

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё одна задачка:
    Скопировать файл и подкаталоги,в имени которых не содержится буквы "r" с диска С: в каталог ROB этого ж диска.

    Всего записей: 5 | Зарегистр. 12-11-2007 | Отправлено: 19:46 13-12-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:18 13-12-2007
    Elisaveta

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ой,сори!Нет,надо создать!

    Всего записей: 5 | Зарегистр. 12-11-2007 | Отправлено: 21:46 13-12-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elisaveta
    Если в имени папок будут "r", то все содержимое скопировано не будут, например "Program Files".

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    md C:\ROB
    for /f "tokens=*" %%i in ('dir /b /s /ad C:\ ^| findstr /i /v "r"') do (
        set "mdpath=%%i"
        md "C:\ROB\!mdpath:~3!"
        call:_copy "%%i\" "C:\ROB\!mdpath:~3!\"
    )
    goto:eof
    :_copy
    pushd %1
    for /f "tokens=*" %%i in ('dir /b /a-d ^| findstr /i /v "r"') do (
        copy "%%~dpnxi" %2
    )
    popd  
     

    Тестировал через echo, так что могут быть ньюансы..
    Добавлено:
    Копируются только те файлы, у которых в полном пути и в названии с расширением нет "r"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:12 13-12-2007 | Исправлено: 01MDM, 09:41 14-12-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elisaveta  
     
    а например каталог
    C:\katalog\katalog roma\  тоже не надо копировать?
     
    а файл
    C:\katalog\remix   ?
     
    лучше привести пример путей файлов и каталогов, которых не надо копировать

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:48 13-12-2007
    Ilyansk

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Извините, vlasenkoa, не запускал я
    хм...
    а батник запускается планировщиком по расписанию?
    а-а-а-а, вот в чем дело... надо было HELP повнимательней почитать мне...
    вобщем, команда get скачивает указанный файл в текущую директорию и если указано имя, то присваивает это имя скачиваемому файлу. Т.к. папка D:\Antivirus уже есть он и не смог переименовать скачиваемый cureit.exе в d:\antivirus. Исходя из этого надо поправить ftp.cms
    Код:
    get  pub/drweb/cureit/cureit.exe d:\antivirus\cureit.exe
    quit

    и еще в конце строки стоял пробельчик, но это не влияло
    ща запускал, все работает
    еще разок извините
    кстати, посмотрите, может качалки типа flashget или reget имеют возможность качать по расписанию, тогда их в автозагрузку и пусть фоном сидят? Да и командная строка у них есть.  
    Видете ли, в чем дело, встроенный ftp клиент не умеет докачивать и заливать в несколько потоков (правда не все сайты это позволяют), и при внезапном обрыве связи в следующий раз батник начнет качать все заново, а файл немаленький и со временем может расти (потому-то я и не пробовал, потом догадался и "играл" на другом файле тогоже сайта)...
    Успехов
     
    Добавлено:

    Цитата:
    Ещё одна задачка:  
    Скопировать файл и подкаталоги,в имени которых не содержится буквы "r" с диска С: в каталог ROB этого ж диска.

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

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 06:54 14-12-2007 | Исправлено: Ilyansk, 07:17 14-12-2007
    KlimKlim



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

    Цитата:
    KlimKlim
    xcopy /?  

     
    xcopy /D  
    спасибо!

    Всего записей: 383 | Зарегистр. 23-03-2006 | Отправлено: 09:02 14-12-2007
    vlasenkoa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to Ilyansk
    чето у меня не идет!
    Связь с rr.drweb.com.
    220 Welcome to Dr.Web FTP service.
    331 Please specify the password.
    230 Login successful.
    Установлено анонимное соединение для Андрюха
    ftp> get pub/drweb/cureit/cureit.exe d:\antivirus\cureit.exe
    500 Illegal PORT command.
     
    Выхожу с клиентской машины через NAT может в этом проблема!

    Всего записей: 5 | Зарегистр. 31-03-2006 | Отправлено: 11:07 14-12-2007
    01MDM



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

    Код:
     
    @echo off
    echo get pub/drweb/cureit/cureit.exe d:\antivirus\cureit.exe >ftp.cnf
    echo bye >>ftp.cnf
    ftp -s:ftp.cnf -A ftp.drweb.com
    del /a ftp.cnf  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:02 14-12-2007
    nikrons

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребятишки, помогите со следующей задачей.
    Ищу в папке файлы с первой буквой в имени a, b, c ... z и возвращаю свободную букву:
     
    SET FirstLetter=A
    if exist S:\311P\%FirstLetter%*.arj goto :letterb
    goto :setletter
     
    :letterb
    SET FirstLetter=B
    if exist S:\311P\%FirstLetter%*.arj goto :letterc
    goto :setletter
    ...
    :letterz
    SET FirstLetter=Z
    if exist S:\311P\%FirstLetter%*.arj goto :error
    goto :setletter
     
    :error
    ...
    :setletter
    ...
     
    Можно ли как-то красивей в одном цикле сделать, чтобы не было 26 сравнений (a-z) ?

    Всего записей: 616 | Зарегистр. 09-08-2001 | Отправлено: 13:49 14-12-2007
    vlasenkoa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to 01MDM
    Спасибо! Но у меня не проходит!
    Связь с rr.drweb.com.
    220 Welcome to Dr.Web FTP service.
    331 Please specify the password.
    230 Login successful.
    Установлено анонимное соединение для Андрюха
    ftp> get pub/drweb/cureit/cureit.exe d:\antivirus\cureit.exe
    500 Illegal PORT command.
    425 Use PORT or PASV first.
    ftp> bye

    Всего записей: 5 | Зарегистр. 31-03-2006 | Отправлено: 14:09 14-12-2007
    Elroir



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

    Код:
     
    @echo off
    for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if not exist S:\311P\%%a*.arj (
    set "FirstLetter=%%a"
    goto setletter
    )
    )
    :error
    ...
    :setletter
    ...
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:17 14-12-2007 | Исправлено: Elroir, 14:18 14-12-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 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