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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    Maza Faka



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

    Код:
     
    @Echo off
    If "%~1"=="" Goto Help
     
    Pushd "%~1"
    For /f "tokens=*" %%a in ('Dir /b') do (
    If not "%%~xa"==".zip" pkzip -add -directories "%%a.zip" "%%a">> Log.txt 2>&1)
    Popd
    Goto :EOF
     
    :Help
    Echo Syntax Arc.bat Puth
     

    Сделал наскоряк, так как уже ухожу с работы домой...Отпишись о результатах...
    Архиватор "PKZIP25", поищи на форуме или в сети и кинь в папку %WinDir%

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 20:15 14-05-2007 | Исправлено: Maza Faka, 20:16 14-05-2007
    xy



    ХУдератор
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    не, ну с архиватором понятно.. я вообще винраром архивировать собирался.. его консольной версией :)
     
    попробую - отпишусь, спасибо
     
    Добавлено:
    в общем адаптировав по свою задачу и использовав 7зип (ибо он бесплатный), получил вот такое:

    Код:
     
    @Echo off  
     
    for /f "tokens=*" %%a in ('dir /b /s /l *.orf') do (  
    "c:\program files\7-zip\7z.exe" a -tzip -mx9 "%%a.zip" "%%a"
    del /f /q "%%a")
     

    спасибо за наводку :)
     
    Добавлено:
    кладу в ту папку, в которой работаю ;)


    ----------
    Счастливые мысли приводят к счастливой клеточной биохимии

    Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 21:18 14-05-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xy
     "c:\program files\7-zip\7z.exe" a -tzip -mx9 "%%a.zip" "%%a"
    del /f /q "%%a"
    сделай лучше в одну строку через && - хоть не будет пытаться удалять файлы, которые по каким-то причинам не удалось запаковать. раз уж 7z не имеет команды m(ove)

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 10:07 15-05-2007
    xy



    ХУдератор
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    типа "c:\program files\7-zip\7z.exe" a -tzip -mx9 "%%a.zip" "%%a"  &&  del /f /q "%%a"
    :-?
     
    Добавлено:
    сделал, спасибо :)

    ----------
    Счастливые мысли приводят к счастливой клеточной биохимии

    Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 10:42 15-05-2007
    Simoid



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Для сбора статистики о друзьях наших железных в моей компании используется Everest Corporate.  Все это делалось вручную. Хочу автоматизировать этот процесс.
     
    Для этого написал батник:
    set %SystemRoot%=\\222.222.222.222\everest
    start \\222.222.222.222\everest\everest.exe /SILENT /R \\222.222.222.222\Reports\$DATE\$IPADDR($HOSTNAME)-$USERNAME /TEXT /LANGru
     
    Помогите решить два вопроса:
    1) Почему то на многих компьютерах батник не выполняется Запускается программа, но не создает отчет и не ложит куда нужно. Возможно неправильно написал батник.
    2) Как прописать это дело в реестр или в автозагрузку. Чтобы пользователь не видел окна запуска.
     

    Всего записей: 870 | Зарегистр. 23-07-2005 | Отправлено: 13:42 15-05-2007 | Исправлено: Simoid, 13:42 15-05-2007
    Maza Faka



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

    Код:
     
    @Echo off
    Set SystemRoot=222.222.222.222\Everest;%SystemRoot%
    Start everest.exe  /SILENT /R 222.222.222.222\Reports\$DATE\$IPADDR($HOSTNAME)-$USERNAME /TEXT /LANGru
     


    Цитата:
    Чтобы пользователь не видел окна запуска

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

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:23 15-05-2007
    wolf0425



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

    Цитата:
    2) Как прописать это дело в реестр или в автозагрузку. Чтобы пользователь не видел окна запуска.  
    а обязательно  в автозагрузку? пропиши в шедулер, чтоб от system пускалось...

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 15:55 15-05-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а если в кавычках ещё одни есть , что делать ? это для reg

    Всего записей: 3930 | Зарегистр. 22-11-2006 | Отправлено: 04:11 16-05-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    euheny
    Не совсем понятно, приведи пример...

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:40 16-05-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Simoid
     Если есть домен лучше всего через доменные политики прописать.
    Проверь у шары 222...reports чтобы права полные были для everyone  
    либо domains user (если домен).
     
    all
      Подскажите можно ли  сравнивать даты создания файлов.
      те.  Задача - найти самый последний созданный файл  
    бакапа dir не подходит ибо файлы на одном компе могут
    лежать на разных дисках.
     
       
     

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 09:23 16-05-2007 | Исправлено: slayer120, 09:40 16-05-2007
    KapralBel



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

    Цитата:
    Подскажите можно ли  сравнивать даты создания файлов.
      те.  Задача - найти самый последний созданный файл  
    бакапа dir не подходит ибо файлы на одном компе могут
    лежать на разных дисках.  

    Задача звучит так - найти последний созданный файл на компе, а не в конкретной папке?
     
    Тогда облом по полной - пока батничек - пробежит хотя бы папку Windows - еще пару десятков создасться

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:52 16-05-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel файлы никакие искать не надо - уже нашли до нас.
    допустим есть %file1% и %file2% - имена с путями.
    требуется выяснить который из этих файлов свежее.
     
    ну и на практике файлов скорее не пара через переменные заданы, а длинным файлом-списком (с путями!), который надо отсортировать - но одно к другому нет проблем свести, решать можно в любом варианте.
     
     
    Добавлено:
    Maza Faka

    Цитата:
    Не совсем понятно, приведи пример...

    чего тебе непонятно? нужно с помощью reg.exe записать в регистри например строку из 11 символов '12 3"456"78'

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 10:04 16-05-2007 | Исправлено: wolf0425, 10:09 16-05-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
     Все проще - есть несколько файлов бакапа на каждом серваке.
    бакапы могут делаться на разные винты в разные дни (по  
    религиозным сображениям ). Теперь надо периодически  
    копировать последний по времени архив каждого сервака на  
    файловый сервер.
      Имена файлов не меняются, бакапы переписываются поверх.
     
     PS а вариант брать дату создания(число.месяц.год) отбрасывать точки
    и сравнить что осталось пройдет?

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 10:08 16-05-2007 | Исправлено: slayer120, 10:12 16-05-2007
    wolf0425



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

    Цитата:
    Все проще - есть несколько файлов бакапа на каждом серваке.  

    так эти файлы лежат на каждом сервере в одном каталоге или нет?
    если в одном - отсортируй их через dir /b /o-d \\server\share\*.* и возьми первый из списка

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 10:14 16-05-2007 | Исправлено: wolf0425, 10:15 16-05-2007
    KapralBel



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

    Код:
    @Echo Off  
    Set dt=%~t1
    Set dtDay=%dt:~0,2%
    Set dtMon=%dt:~3,2%
    Set dtYea=%dt:~6,4%
    Set dtHou=%dt:~11,2%
    Set dtMin=%dt:~14,2%
     
    Set dtDateSort=%dtYea%%dtMon%%dtDay%-%dtHou%%dtMin%
     
    Set dt

     
    Батничек - получает имя файла в переменной %dtDateSort% - остается дата создания пригодная для сортировки
     
    ЗЫ. А почему бы в имя архива не включать и дату его создания ? софт не позволяет?

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



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

    Цитата:
    чего тебе непонятно? нужно с помощью reg.exe записать в регистри например строку из 11 символов '12 3"456"78'

    Какую именно строку? Строку пути, значения, параметра значения? Просто хотел уточнить, я ведь не телепат! И чем сидеть и гадать, не лучше ли спросить подробности!

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



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

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

     
    Если нужно получит сортированный список
     

    Код:
    del temp.txt
    for /f %%i in (files.txt) do (
      for /f "tokens=1-5* delims=.: " %%j in ("%%~ti") do echo %%l%%k%%j%%m%%n %%i>>temp.txt
    )
    type temp.txt | sort >result.txt

     
    files.txt - список исходных файлов.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:47 16-05-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    KapralBel
     Гран мерси.  
     Может добавить в фак по работе с временем?
    wolf0425

    Цитата:
    отсортируй их через dir /b /o-d \\server\share\*.*  

      На одном серваке баки лежат в одном каталоге.
     Но все равно с dir имно неудобно огород городить.  
      Более правильно работать с полным списком бакапов по всем серверам
    т.е. взять код   NIKZZZZ и добавить цикл по сервакам (для каждого
    сервака из общего списка брать последний самый свежий бакап и копировать).
       
     

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 11:01 16-05-2007
    wolf0425



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

    Цитата:
    Какую именно строку? Строку пути, значения, параметра значения?  

    какая нафиг разница - пути или параметра - "строку с кавычками внутри (строки)".
     
    NIKZZZZ
    идея зравая, только аккуратнее надо примеры писать
    for /f "tokens=*" %%i in (files.txt) do (

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 11:11 16-05-2007
    Maza Faka



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

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:17 16-05-2007 | Исправлено: Maza Faka, 11:38 16-05-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Закладки » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru