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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    Цитата:
    Хотя я и не понимаю почему...

    потому что до начала исполнения интерпретатором endlocal , в строке с которой открывается скобка, преобразуются в строки все операторы заключенных в те скобки команд  
     
    теперь о твоем батнике:  
     
    когда ты писал команду
    Echo %Failures%>> %Log%  
    ты наверно хотел написать  
    >> %Log% Echo %Failures%
    или (Echo %Failures%) >> %Log%
    а не перенаправление в лог седьмого (как я вижу по эху %Failures%) потока вывода команды Echo
     
    зачем в этом батнике вообще EndLocal ? или это только фрагмент, дальше еще что-то идет?
     
    что и куда копирует команда Copy /Y "!EvtFile!" D:\Events\%CurrentDay%\*.*
    звездочки ставятся на маске источника, а не на маске назначения
     
    "%SystemRoot%\System32\Reg.Exe" Query "%%A /V "File" &&
    нечетное число "
     
    хватит пока, разбирайся.
     
    Добавлено:
    по моему ты хотел написать как-то так:

    Код:
    @echo off
    chcp 1251
    set log=log
    echo %date% %time% >log
    set Destdir=.\Events\
    SetLocal EnableDelayedExpansion
     
    For /F "Skip=12 Tokens=*" %%A In ('%SystemRoot%\System32\Reg.exe Query "HKLM\System\CurrentControlSet\Services\EventLog"') Do "%SystemRoot%\System32\Reg.Exe" Query "%%A" /V "File" 1>nul 2>nul && (
        Set EvtFile=
        For /F "Skip=2 Tokens=3-28" %%a In ('%SystemRoot%\System32\Reg.Exe Query "%%A" /V "File"') Do 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 "%%A" Gtr " " Set EvtFile=!EvtFile! %%A
        1>>%Log% 2>&1 (
            Echo !EvtFile!
            call Set EvtFile=!EvtFile:~1!
            copy /y "!EvtFile!" %Destdir% 1>nul
            if errorlevel 1 (
            Set /A Failures=Failures+1  
            Echo.
            Echo ^>^>^>^>^>^>^>^> FAILURE^!^!^!
            Echo Файл "!EvtFile!"не был скопирован.
            Echo.  
            )
        )
    )
    >> %Log% Echo errorcount=!Failures!
     
    exit

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:07 18-11-2009 | Исправлено: wolf0425, 19:51 18-11-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот получил в переменной время в GMT, примерно такое  
    set eventtime=Wed, 18 Nov 2009 11:45:06 GMT
     
    а нужно мне  напечатать - сколько это локального времени.
    Можно на это как-то винды напрячь? Хранить и самому прибавлять часовой пояс из батника как-то не хочется

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 20:21 18-11-2009
    01MDM



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

    Цитата:
    Можно на это как-то винды напрячь?

    В PoSh'е легко:

    Код:
     
    PS > get-date -f HH:mm:ss "Wed, 18 Nov 2009 11:45:06 GMT"
    14:45:06
    PS >
     

    В батнике наверное только прибавлять. Я как-то пытался через WMI, но оно только текущее обрабатывает.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:03 18-11-2009
    VisioNRU

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!!!!
    Нужна помощь! есть инсталлер  его необходимо запускать из батника
    пишу  
     
    call %CD:~0,2%\путь\setup.exe
     или  
    start %CD:~0,2%\путь\setup.exe
    или  
    start .\путь\setup.exe
     
     в общем  инсталлер стартует, но потом пишет:  
    Необрабатываемое исключение. установка будет прервана.
     и все. все бы ничего НО. Тут же вручную (мышью, клавой и тд) запускаю этот инсталлер и все ставится.  
     Умные мира сего, подскажите плз...  думаю что проблема в путях, (относительные,постоянные )

    Всего записей: 14 | Зарегистр. 17-10-2009 | Отправлено: 21:31 18-11-2009
    FeelThePain

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите написать фаил со след действиами
     
    1. Создать каталог К1  
    2. Создать каталог K2.  
    3. В катологе К1 создать фаил а1 в котором содержится текст 111  
    4. Проверить содержание фаила a1 , добавить текст 222, сохранить фаил с новим содержанием.  
    5. Зделать копию фаила а1 в катологе К1 с названием a2      
    6. Скопировать фаилы a1 un a2 в котолог K2.  
    7. Переити в каталог K2 и проверть содержания фаила a1 un a2  (каталог K2!).  
    8. Переиминовать в каталоге K2 фаилы  a1 и a2 в b1 и b2.  
    9. Удалить фаилы a1 и a2 из каталога K1.  
    10. Удалить каталог K1.  
    11. Удалить фаилы b1 и b2 из каталога K2.  
    12. Удалить каталог K2.  

    Всего записей: 10 | Зарегистр. 17-11-2009 | Отправлено: 21:42 18-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    сомневаюсь, что это тебе поможет, знаю только как узнать локальный часовой пояс и состоние перехода на летнее время через консоль (актуально, если локалки в разных часовых поясах)

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:46 18-11-2009
    king_stiven

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

    Цитата:
    FeelThePain


    Цитата:
    1. Создать каталог К1  
    2. Создать каталог K2.

    md "К1"
    md "K2"

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 22:37 18-11-2009
    FeelThePain

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо задание зделал
    md k1
    md k2
    cd k1
    edit a1
    edit a1
    copy a1 a2
    copy *.* C:\DOCUME~1\FEELTH~1\k2
    CD C:\DOCUME~1\FEELTH~1\k2
    edit a1
    edit a2
    ren a1 b1
    ren a2 b2
    CD C:\DOCUME~1\FEELTH~1\k1
    DEL a*
    CD C:\DOCUME~1\FEELTH~1\k2
    DEL b*
    CD C:\DOCUME~1\FEELTH~1
    rd k1
    rd k2
     
    мозет кто поможет как зделать для етого bat фаила что когда запускаеш название каталога и фаилов были как пораметры каторые надо указывать при старте

    Всего записей: 10 | Зарегистр. 17-11-2009 | Отправлено: 23:17 18-11-2009 | Исправлено: FeelThePain, 08:04 19-11-2009
    bredonosec



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

    Цитата:
    били как пораметры катории

    научитесь хоть русскоязычной грамотности ((((  
     
    set /P parameter_1=vvedite takoj-to parametr  

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 23:43 18-11-2009
    FeelThePain

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [q][/q]
    Я введу этот код запросит он у меня параметор введу его и он создас папку с таким именем и будет делать с ней эти мадификацыи? Тока как это так если на данный момент все параметры прописаны уже.

    Всего записей: 10 | Зарегистр. 17-11-2009 | Отправлено: 08:09 19-11-2009 | Исправлено: FeelThePain, 10:13 19-11-2009
    BVV63



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

    Цитата:
    потому что до начала исполнения интерпретатором endlocal , в строке с которой открывается скобка, преобразуются в строки все операторы заключенных в те скобки команд

    Благодарю за разъяснения.

    Цитата:
    когда ты писал команду  
    Echo %Failures%>> %Log%  
    ты наверно хотел написать  
    >> %Log% Echo %Failures%  
    или (Echo %Failures%) >> %Log%

    Большое спасибо. Я считал команды
    Echo %Failures%>> %Log%
    и
    >> %Log% Echo %Failures%
    эквивалентными. Однако, Вы правы, первая не работала, а вторая сработала на ура.

    Цитата:
    зачем в этом батнике вообще EndLocal ? или это только фрагмент, дальше еще что-то идет?

    Да, фрагмент, причём процедуры, так что EndLocal требуется.

    Цитата:
    звездочки ставятся на маске источника, а не на маске назначения

    Согласен, на маске назначения они не мешают, но просто бессмысленны.

    Цитата:
    "%SystemRoot%\System32\Reg.Exe" Query "%%A /V "File" &&  
    нечетное число "

    Эту фразу я, честно говоря, не понял.

    Цитата:
    по моему ты хотел написать как-то так:

    Ну да, примерно. Спасибо за помощь начинающему батанику!

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 08:21 19-11-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FeelThePain
    Срочно учить русский язык.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 08:25 19-11-2009
    mugil_cephalus

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

    Цитата:
    Срочно учить русский язык.

    может это школьник-акселератор или вундеркинд, и it-грамоту он освоил быстрее другой

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:38 19-11-2009
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 10:11 19-11-2009
    FeelThePain

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

    Всего записей: 10 | Зарегистр. 17-11-2009 | Отправлено: 10:12 19-11-2009 | Исправлено: FeelThePain, 10:14 19-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    на кавказе так: детство-аксакал (вместо детсво-отрочество-юность-...)
    FeelThePain

    Цитата:
    русский не совсем мой радной язык + привычка писать латинскими буквами

    втроая моя версия, что ты украинец (но не стал писать, сейчас все нервные, за шовиниста примут: чуть что, - так сразу паспорт   )

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:35 19-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, можно ли в конструкции For... In... Do... в In () использовать переменные (наверняка ведь можно, только не понятно, как)? Перебрал уже кучу способов - всё напрасно. Напр., (если в консоли) выполнить:
     
    Set Disks= C D E
    For /F "Tokens=1-26" %A In ("%Disks%") Do Echo %A
    или
    For /F "Tokens=1-26" %A In ('Echo %Disks%') Do Echo %A
     
    Echo отрабатывает только для C, все последующие буквы игнорируются.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:44 19-11-2009 | Исправлено: BVV63, 10:48 19-11-2009
    FeelThePain

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

    Всего записей: 10 | Зарегистр. 17-11-2009 | Отправлено: 11:07 19-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    Set "Disks= C D E" - так более правильно
    попробуй do echo %A %B %C

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:15 19-11-2009
    king_stiven

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

    Цитата:
    For %A In (%Disks%) Do Echo %A


    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 11:17 19-11-2009
       

    Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru