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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    На счет календарика вопросы возникли...
    Что это за конструкция?
    %exec:,=^,%
    Замена запятых? Чем?
    И вот это я не разумею:
    set /a CheckLeap=Year%%4

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 10:33 08-04-2009 | Исправлено: Joo1z, 10:42 08-04-2009
    01MDM



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

    Цитата:
    Что это за конструкция?
    %exec:,=^,%

     
    Просто при запуске команды wmic в цикле необходимо экранировать запятые, поэтому чтобы не прописывать все "^," в самой команде, я заменил все "," на "^," в переменной %exec%
     

    Цитата:
    И вот это я не разумею:
    set /a CheckLeap=Year%%4
     

     
    Здесь определяется сколко в феврале дней. Переменная %CheckLeap% это результат вычисления остатка от деления текущего года на 4 ( в батнике необходимо экранировать "%" добавочным "%" ). Если остается 0, то год високосный и в феврале 29 дней.
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:50 08-04-2009
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ага, в обоих случая экранирование....
    Необходимость экранирования запятых чем вызвана? Я вижу что без экранирования не работает, но не понимаю почему.
    А на счет того, что % в алгебраических выражениях - это остаток от деления, не знал.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 11:46 08-04-2009 | Исправлено: Joo1z, 11:53 08-04-2009
    01MDM



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

    Цитата:
    Необходимость экранирования запятых чем вызвана?

     
    Больше проверить не на чем (не могу придумать команду с запятыми) , но наверное for воспринимает запятые, как разделители.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:34 08-04-2009
    TreaNT

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с помощью батника создать большое количество файлов в 1 директории:
    1: количество файлов 500000;
    2: имя уникальное для каждого файла;
    2: размер не важен (но не более 4Kb)
    3: контент файлов различный для каждого файла. Я предполагаю это просто текст (имя файла+время создания+рандомное чило(можно и без него, добавил для размера файла)).
     
    Буду очень благодарен за помощь.

    Всего записей: 1 | Зарегистр. 08-04-2009 | Отправлено: 13:26 08-04-2009
    Maza_Faka



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

    Код:
     
    @Echo off
     
    For /L %%A In (1,1,500000) Do Call :_CreateProc %%A
    GoTo :EOF
     
    :_CreateProc
    Echo %1-%DATE%-%TIME%-%RANDOM%>%RANDOM%.txt
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:01 08-04-2009
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza_Faka
    Как я понимаю переменная Random имеет тип integer, т.е. ограничена значением в 32767, что не подойдет для создания 500 тыс. файлов с уникальными именами, в данним случае проще использовать в качестве имени файла переменную %1 (она же %%a), но тогда имена будут по-порядку от 1 до 500000. Можно еще имя файла создавать из двух переменных random, получится %random%%random%.txt
     
    Как-то пол-миллиона файлов - это жестоко.
    Немного пошизовался - изобрел такой велосипед:

    Код:
    @Echo off
    setlocal
    For /L %%A In (1,1,50) Do call :Abz
    For /f %%b In (fname.txt) do Echo %DATE%-%TIME%-%RANDOM%-%%b>%%b.txt
    goto :EOF
     
    :Abz
    echo %RANDOM%%random%%Random% | sed.exe s/26/z/g;s/25/y/g;s/24/x/g;s/23/w/g;s/22/v/g;s/21/u/g;s/20/t/g;s/19/s/g;s/18/r/g;s/17/q/g;s/16/p/g;s/15/o/g;s/14/n/g;s/13/m/g;s/12/l/g;s/11/k/g;s/10/j/g;s/9/i/g;s/8/h/g;s/7/g/g;s/6/f/g;s/5/e/g;s/4/d/g;s/3/c/g;s/2/b/g;s/1/a/g >>fname.txt

    Получилось несколько топорно, и sed работает довольно медленно, зато создаются файлы с буквенными именами, за исключением 0 (нуля).

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 15:36 08-04-2009 | Исправлено: Joo1z, 16:40 08-04-2009
    ruslanxxx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен скрипт - батник для чистки system eventlog (Event Viewer)  !!??

    Всего записей: 5 | Зарегистр. 12-03-2008 | Отправлено: 23:01 08-04-2009 | Исправлено: ruslanxxx, 00:20 09-04-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TreaNT
    вариант просмотра
     
    Код:
    @echo off
    for /l %%a in (1,1,500000) do (set a=%%a&call:1)
    goto:eof
    :1
    set
    r=%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%
    echo %r%
    .txt +%time% + (%r%) %a% %r%.txt
    :: echo %r%.txt +%time% + (%r%) %a% >%r%.txt
     
    для работы снять с предохранителя коментарий

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:08 09-04-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for /l %%i in (1,1,25000) do (
        for %%j in (q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z) do call:1 %%j
    )
    goto:eof
     
    :1
    set t=%time::=%
    set t=%t:,=%
    set n=%1%t%
    echo %n: =%
    ::echo %DATE%-%TIME% 1>%n: =%.txt
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:55 09-04-2009 | Исправлено: 01MDM, 00:56 09-04-2009
    Maza_Faka



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

    Цитата:
    Нужен скрипт - батник для чистки system eventlog (Event Viewer)

    Бэкап и очистка журналов Event Log

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:49 09-04-2009
    Serhi_84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую. Возникли вопросы по паре задач, может кто чем поможет.
     
    1) Есть две папки, предположим 1 и 2.  В папки скидываются файлы с ежедневными бэкапами (bk-1, bk-2, ...bk-7), причем в папку 1 - по четным неделям, в папку 2 - по нечетным неделям. Вопрос - как в батнике осуществить проверку недели на четность? Сейчас просто в шедулере сделал 2 таска, но хочется, чтобы все было в одном файле. Как вариант - сравнивать 2 файла текущего дня и смотрим который файл старее, его и перезаписываем. Как из двух файлов файлов выявить более старый и вывести путь к этому файлу?
     
    2) Хочу сделать перемещение файлов из папки по заданному месяцу, то есть аналог команды mv с указанием месяца в виде параметра (например mv /path1 /path2 12).  Rfr 'nj jceotcndbnm&
     
    Заранее спасибо ,пока сам еще буду мучаться)

    Всего записей: 30 | Зарегистр. 29-02-2008 | Отправлено: 08:10 09-04-2009
    01MDM



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

    Цитата:
    Вопрос - как в батнике осуществить проверку недели на четность?

     

    Код:
     
    @echo off
    for /f %%i in ('wmic path win32_LocalTime get WeekInMonth') do set "num=%%i"
    set /a check=num%%2
    if not %check%==1 (echo even week) else (echo odd week)
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:55 09-04-2009 | Исправлено: 01MDM, 09:59 09-04-2009
    alexander6161



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

    Цитата:
    Может подскажет кто: при вызове из bat-файла какого-либо *.exe, окно консоли висит до тех пор, пока этот самый *.exe не завершится. Система - WinXP SP3. На Win2K, как я помню, такого не было.  
    Как заставить bat не ждать завершения вызванного из него приложения?  

    start "" notepad.exe

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 10:15 09-04-2009
    glazkoff



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Сразу извинюсь за элементарный вопрос, но решение никак не удается найти.
    Задача следующая.
    Есть файл от содержимого которого зависят дальнейшие действия. Анализирую файл командой "grep" и дальше нужно написать условие. Если есть вхождение - действуем так, нет - действуем иначе. Перепробовал кучу вариантов (читаю хелп и пробую, опыта нет) и ничего не получается.

    Всего записей: 7 | Зарегистр. 09-04-2007 | Отправлено: 10:59 09-04-2009
    Maza_Faka



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

    Цитата:
    Анализирую файл командой "grep"

    Команды: Find; Findstr не подходят? Что конкретно ищется?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:44 09-04-2009
    andy66ru

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

    Всего записей: 1 | Зарегистр. 09-04-2009 | Отправлено: 13:10 09-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    glazkoff
    Исходя из того что нам известно:

    Код:
     
    grep "условие поиска" "Путь\к\файлу" && соответствие || поиск не дал результата
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:15 09-04-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как переменной присвоить результат работы reg query?

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 00:02 10-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    batniki
     
    Например так, как частный пример:

    Код:
     
    @echo off
    for /f "tokens=3*" %%i in ('reg query hkcu\environment /v tmp') do set "value=%%i %%j"
    echo %value%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:41 10-04-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru