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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    wolf0425



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

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 11:21 10-04-2008
    Dantis

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

    Цитата:
    Можно даже не писать батник, просто добавь в шедулер на 3 утра каждый день:  
     
    shutdown /r /t 30

     
    Вы меня не так поняли... Мне нужно что бы батник сам проверял системное время и ровно в 3  утра перезускал комп. Сам.  

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 15:06 10-04-2008
    NikTychina



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно, чтобы при запущенной командной строке не было её окна (можно свернуть), а также чтобы не было видно кнопки в панели задач (это, пожалуй, главное). Как можно сделать?
     

    Всего записей: 16 | Зарегистр. 14-10-2007 | Отправлено: 15:20 10-04-2008
    S4astliff4ik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребят,а как этот файлик расшифровать???
     
    @Echo off
    xcopy.exe Y:\BackUp\BackUp\Buch\*.* Z:\BackUp\Buch\*.* /s /e /h /Y
    xcopy.exe Y:\BackUp\BackUpTorg\Torg\*.* Z:\BackUp\Torg\*.* /s /e /h /Y
    If Not ErrorLevel 1 Goto Exit
    Echo ***SERIOUS ERROR DETECTED DURING BACKUP***
    :Exit
    EXIT
     

    Всего записей: 858 | Зарегистр. 20-01-2008 | Отправлено: 15:28 10-04-2008
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    S4astliff4ik, а чего тут расшифровывать?
    скопировать с переписыванием, с подкаталогами (включая пустые) и без подтверждений все файлы (включая скрытые и системные) из двух каталогов Y: на Z:
    если второе копирование было не вполне успешным (например какие-то файлы были заблокированы и не скопировались, или места не хватило, или ещё что)  - то выдать в консоль сообщение о серьезной ошибке.

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425,не совсем правильно вопрос поставил. Интересует
    Цитата:
    *.*  
    ,
    Цитата:
    /s /e /h /Y

    Я так понимаю,это DOSовские команды так??? если возможно,то ткнуть носом,где взглянуть,т.к. впервые с этим столкнулся (bat-файлы,script)...  
     

    Всего записей: 858 | Зарегистр. 20-01-2008 | Отправлено: 16:10 10-04-2008
    igor_andreev

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

    Цитата:
    Еще было бы неплохо сделать так - чтобы xcopy после того как скопировал все из указанной папки, проверяла ее на изменения и копировал изменившиеся и добавленные файлы...  

    У xcopy есть параметр /M
    Но для постоянного зеркалирования тогда уж лучше пользоваться robocopy с параметрами /MON и(или) /MOT

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:12 10-04-2008 | Исправлено: igor_andreev, 16:14 10-04-2008
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis, прописать перезагрузку в шедулер на 03:00- куда надежнее...
    Да и проще - нет необходимости проверять - перезагружались сегодня или нет, решение пригодно и для круглосуточно работающих батников (сидящих в автозагрузке, etc)
     
    Но если уж очень надо именно из батника следить за временем
     
    :wait
    it "%time:~0,5%"=="03:00" goto :reboot
    ping -n 5 localhost > nul  
    goto :wait
     
    :reboot
    shutdown /r /t 30
     
    если комп перезагрузится быстро и батник успеет снова запуститься в 03:00:59 - будет нежданчик
     
    S4astliff4ik -  xcopy /?

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



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

    Цитата:
    Вы меня не так поняли... Мне нужно что бы батник сам проверял системное время и ровно в 3  утра перезускал комп. Сам.  

     
    Не самое здоровое желание. Одно дело будет висеть процесс и грузить... грузить... (каждую секунду).  Другое дело планировщик, который сам выполнит в заданное время задание.
     
    Если есть какие нюансы, объясни.
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:18 10-04-2008
    S4astliff4ik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425,точно,спасибо... как я забыл... век живи-век учись...
     
     
     
    Добавлено:
    wolf0425,
    Цитата:
    *.*
    ,вот это не совсем понял... что это???

    Всего записей: 858 | Зарегистр. 20-01-2008 | Отправлено: 16:21 10-04-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Цитата:
    /m  
    Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов. Сведения об установке атрибутов с помощью команды attrib см. по ссылке «См. также».  
    Помоему - /m это не то...
     
    S4astliff4ik
    Цитата:
    вот это не совсем понял... что это???
    *.* - означает что: будут копироваться файлы с любыми именами и с любыми расширениями...
     
    2ALL
    Вообщем, никак не могу понять - как заставить .cmd'шников в случае завершения пользователем (Ctrl+C) не выдовать запрос: Остановить выполнение пакетного файла [y/n]?

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 20:20 10-04-2008
    igor_andreev

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

    Цитата:
    Помоему - /m это не то...

    Это только по твоему. Читайте мануалы на ночь, это один из самых простых и древних способов бекапа только измененных файлов.
     
    Проделай вот это пошагово и все поймешь:
    1) Зайди из комстроки в любую папку, с файлами *.txt например, и дай команду ATTRIB.
    2) Видишь, напротив каждого файла есть буковка A? Теперь напиши команду ATTRIB -A *.TXT и нажми Enter.
    3) Еще раз ATTRIB. Что видим? Нет буковок A
    4) Открой любой *.txt в этой папке обычным виндовым блокнотом и измени его, ну впиши там пару букв или пробел поставь. Закрой файл, на вопрос о сохранении ответь утвердительно.
    5) Еще раз ATTRIB. Что видим? Напротив того файла, что ты изменил, появилась буква A
    То есть XCOPY, запущенная с параметром /M или /A, скопирует только этот файл. А остальные файлы, если их не изменять, так и будут без аттрибута "Архивный". В архиваторах, в том же rar.exe зачем по твоему нужны опции -ac и -ao? Для этого вот

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 20:53 10-04-2008 | Исправлено: igor_andreev, 21:03 10-04-2008
    NikTychina



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

    Всего записей: 16 | Зарегистр. 14-10-2007 | Отправлено: 21:09 10-04-2008
    Dantis

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

    Цитата:
     
    Но если уж очень надо именно из батника следить за временем  
     
    :wait  
    it "%time:~0,5%"=="03:00" goto :reboot  
    ping -n 5 localhost > nul    
    goto :wait  
     
    :reboot  
    shutdown /r /t 30

     
    Спасибо... но батник не работае =).... а причем тут команда пинг ? =)  
     

    Цитата:
    Не самое здоровое желание. Одно дело будет висеть процесс и грузить... грузить... (каждую секунду).  Другое дело планировщик, который сам выполнит в заданное время задание.  
     
    Если есть какие нюансы, объясни.

     
    Просто плонировшик не работает так как надо... =)    
     
     
     
     

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 21:11 10-04-2008 | Исправлено: Dantis, 21:40 10-04-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis
     
    Просто простая описка wolf0425, замени "it" на "if"
     
    ping для снижения нагрузки - делает паузу в бесконечном (до 3:00) цикле.
    Но все равно это не лучшее решение.
     
    И что у тебя не работает?

    Код:
     
    at 3:00 shutdown /r /t 30
     

     
    Попробуй введи на минуту вперед относительно текущего времени (вместо 3:00). Отмена перезагрузки shutdown /a
     
    Вот чтоб создать задание на каждый день в 3:00

    Код:
     
    schtasks /create /ru Dantis /rp YourPassword /sc daily /tn Reboot /st 03:00:00 /tr "shutdown /r /t 30"
     
     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:47 10-04-2008 | Исправлено: 01MDM, 22:30 10-04-2008
    Elroir



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

    Цитата:
    Нужно, чтобы при запущенной командной строке не было её окна (можно свернуть), а также чтобы не было видно кнопки в панели задач (это, пожалуй, главное). Как можно сделать?

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

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:15 11-04-2008
    Jun1or

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет.
    Подскажите плз.
    Есть архивы формата DD.MM.YYYY.rar, как сделать так что бы они переносились в подпапки: например в папке есть архивы ??.03.???? и ??.04.???? как заставить те что 03 кидать в папку March ( или 03 ), а 04 в April ( или 04 ) ?

    Всего записей: 7 | Зарегистр. 04-08-2006 | Отправлено: 00:32 11-04-2008
    Elroir



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

    Код:
     

    @echo off
    setlocal enabledelayedexpansion
    set "01=January" & set "02=February" & set "03=March"
    set "04=April" & set "05=May" & set "06=June"
    set "07=July" & set "08=August" & set "09=September"
    set "10=October" & set "11=November" & set "12=December"
    for %%a in (??.??.????.rar) do call :move_file "%%a"
    goto :EOF
    :move_file
    set "file=%~1"
    for %%b in (01 02 03 04 05 06 07 08 09 10 11 12) do (
    if %file:~3,2%==%%b (md !%%b! 2>nul & move /y "%file%" !%%b!\)
    )

     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:00 11-04-2008 | Исправлено: Elroir, 01:01 11-04-2008
    Jun1or

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir простите, я не смог самостоятельно прикрутить этот код к своему скрипту ...
    Помогите если не сложно, заранее спасибо )
     
    1 часть скрипта делает архив папок с логами, папки формата DD.MM.YYYY
     

    Код:
     
    for /D /D %%A in (E:\service\logs\*.*) do "C:\Program Files\WinRAR\RAR.exe" -ac -ed A "%%A.rar" "%%A"
     

     
    2 часть переносит сжатые папки на бэкап шару
     

    Код:
     
    for %%x in ("E:\service\logs\*.rar") do (
    move "%%x" "\\test\TEST_BACKUP\Logs\"
     

     
    собственно я хотел что бы в зависимости от месяца в название архива (??.??.????.rar в папке E:\service\logs\) в бэкап шару (\\test\TEST_BACKUP\Logs\) он переносился в соответствующею этому месяцу подпапку (\\test\TEST_BACKUP\Logs\April).
     
    Простите за то что нагружаю и спасибо что помогаете

    Всего записей: 7 | Зарегистр. 04-08-2006 | Отправлено: 07:14 11-04-2008
    pavel1978

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток! Подскажите, пож-ста:
    1) при копировании с пом команды xcopy батник не понимает папки, имена которых содержат пробелы, например, new folder.  А если написать так - newfolder, то все норм, копирует. как обрулить пробелы, не переименовывая папку?
    2) Используя команду net send приходится писАть транслитом, русских букв не понимает, пишет "кракозябры". Как с этим бороться? Может, шрифты-параметры командной строки какие поменять?

    Всего записей: 149 | Зарегистр. 13-03-2008 | Отправлено: 09:06 11-04-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru