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

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



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

    Цитата:
    сколько строк в файле, который на 1 перевод строки короче

    это как?

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 20:40 18-06-2009
    yurkesha



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

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 20:53 18-06-2009
    alexander6161



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    для тренировки определись:
    1. сколько строк в файле состоящем только из одного перевода строки
    2. сколько строк в файле, который на 1 перевод строки короче.

    Моё мнение такое:
     
    1. Сколько строк в файле состоящем только из одного перевода строки?
    Ответ: две строки. Действительно, двигая курсор по документу отчётливо видим две строки.
     
    2. Сколько строк в файле, который на 1 перевод строки короче?
    Ответ: одна. Убираем перевод строки и видим, что курсор занимает одну строку. Мой текстовый редактор при пустом файле показывает, что я нахожусь именно в первой строке, а не в какой-нибудь нулевой. Единственный ньюанс - это строка нулевой длины, вот и всё.

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 23:01 18-06-2009 | Исправлено: alexander6161, 23:05 18-06-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HaK1R
    Цитата:
    это как?
    просто. файл из единственного crlf - имеет одну строку.
    файл в котором на 1 crlf меньше - имеет нулевой размер и 0 строк. а yurkesha бредит, утверждая что в файле нулевого размера есть 1 строка - так как при открытии такого файла редактор на какой-то строке стоит.
     
    yurkesha
    Цитата:
    Иначе ты все строки подобного вида в файле потеряешь.  
    ты бредишь, я совершенно ничего не потеряю
     
     
    Добавлено:

    Цитата:
    Действительно, двигая курсор по документу отчётливо видим две строки.  
    а просим редактор (ну наприрмер ms-word) посчитать количество строк - он говорит что одна.
     
     
    Добавлено:

    Цитата:
    2. Сколько строк в файле, который на 1 перевод строки короче?
    Ответ: одна. Убираем перевод строки и видим, что курсор занимает одну строку. Мой текстовый редактор при пустом файле показывает, что я нахожусь именно в первой строке, а не в какой-нибудь нулевой.
    замечательно. теперь пометь все строки по Ctrl-a - твоя строка (если она там есть) должна по Ctr-c скопироваться и вставь буфер 10 раз. если получишь курсор на 11 строке - напиши

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:02 18-06-2009 | Исправлено: wolf0425, 23:15 18-06-2009
    alexander6161



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    а просим редактор (ну наприрмер ms-word) посчитать количество строк - он говорит что одна.  

    А ты посчитай на обычном китайском калькуляторе, сколько будет 2+2*2? Калькулятор скажет, что восемь. А на самом деле будет шесть! И что теперь, калькулятору верить?
    Предлагаю больше не флудить на эту тему, а то засрём весь топик.
     
    Добавлено:
    wolf0425
    Предлагаю тебе решить задачку, только не бери Word как эталон всего что касается текстов. Возьми Notepad, Bred3.
    Введи в первую строку например 123 без перевода строки.
    Я думаю, здесь ты согласен, что в файле одна строка?
    Теперь выдели текст CTRL+A, скопируй CTRL+C, стрелкой вправо до конца строки и вставь два раза CTRL+V.
    Судя твоей логике, в файле уже три строки? А видим только одну: 123123123
    А теперь то же самое сделй в Word (я использовал 2003), будет так:
    123123
    123
    Он с какого-то перепуга первый раз вставляет в эту же строку, а потом сам начинает переносить на другую строку. И ты после этого считаешь его эталоном текстовых редакторов, и всё что он делает есть аксиома?
    Пиши мне в личку, если найдёшь здравомыслящее объяснение описанной ситуации.

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 23:09 18-06-2009 | Исправлено: alexander6161, 13:38 19-06-2009
    wolf0425



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

    Цитата:
    Предлагаю больше не флудить на эту тему, а то засрём весь топик.
    так не флуди про калькуляторы, особенно после того как ты точно так же вместо калькулятора использовал редактор.
     
    Если найдешь другой редатор, умеющий показывать статистику по файлу (количество строк, символов, итп) и он тебе скажет что в пустом файле есть одна строка - свистни.
     
     
    по твоей логике в пустом файле строка не только есть - она еще и бесконечной длины, так как стрелка вправо например в ФАРовском редакторе никуда не упирается

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:14 18-06-2009 | Исправлено: wolf0425, 23:21 18-06-2009
    alexander6161



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

    Текстовый редактор Bred3 показывает в пустом файле, что курсор находится в положении первая строка, первый символ.

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 23:18 18-06-2009 | Исправлено: alexander6161, 23:18 18-06-2009
    wolf0425



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

    Цитата:
    Текстовый редактор Bred3 показывает в пустом файле, что курсор находится в положении первая строка, первый символ.
    ты  неграмотный или прикадываешься? повторяю - редактор показывающий статистику о редактируемом файле, а не позицию курсора.  
     
    Кстати, редактор тебе показывает "первый символ".
    Мы уже выяснили что файл нулевой длины и никаких символов в нем нет - в том числе и первого (иначе встанет вопрос о коде первого символа).
    Т.е. твой редактор, позиционируя курсор в конец файла, показывает никак не то сколько символов в последней строке файла, да? чем его индикатор строки должен отличаться от индикатора колонки?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:22 18-06-2009 | Исправлено: wolf0425, 23:43 18-06-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425,alexander6161
    Господа, не флудите. Это столь не важно.
    Можете сделать новую тему, и ссылку на нее скинуть. Кому интересно-зайдет, почитает
    p.s. Я согласен с alexander6161
    Цитата:
    Моё мнение такое:  

     

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 23:35 18-06-2009
    yurkesha



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

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 23:45 18-06-2009 | Исправлено: yurkesha, 00:09 19-06-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно увеличить переменную на еденицу не используя цикл ?
     
    Добавлено:
     
     
    Уже разлбрался ) set /a

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 00:08 19-06-2009
    slay1212

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите решить задачку. Батник периодически запускается и отслеживает время работы определенного юзера, имя и время работы в минутах задается параметром.
      Система w2k3. Для определения логона используются коды 528(логон), 551 (логоф) журнала секюрити и утилита Руссиновича Pslogkist (в идеале лучше бы виндовое средство, но systeminfo не всегда правильно uptime системы определяет)  
    psloglist.exe -d 0 -s -id 551,528 security  > 11.txt  
    Возможно надо еще | find "%usrname%" добавить
     
    выдает все логоны логофы за последний день в таком виде.  
    Подробнее...
       Собственно что надо
    1. - посчитать время работы от логона до логофа в минутах (имхо не совсем правильно ибо в случае бсода логофа не будет . Поэтому возможно надо анализировать и журнал систем на предмет событий 6008 (за эти же сутки) для определения времени окончания работы юзера.
    8552,System,EventLog,ERROR,FILSRV,01.06.2009 13:29:08,6008,None,The previous system shutdown at 13:22:57 on 01.06.2009 was unexpected.  
     2. Посчитать общее время работы юзера.При превышении лимита скорее всего убивать експлорер с задержкой 5 мин и предупреждающим окошком ( ну или  логоф).
       

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 16:24 19-06-2009 | Исправлено: slay1212, 16:47 19-06-2009
    ForposT_ForeveR



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

    Код:
    for /f "delims=" %%N in (file.txt) do md "%%N" && xcopy "C:\lala" "%%N" /E /C /Q  

     
    Подскажите пожалуйста, как сделать так, чтобы копировалась не папка "lala", а сначала папка "1", затем "2"...
    Т.е. поставить переменную и каждый раз увеличивать переменную на +1.
    Заранее спасибо

    Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 20:05 19-06-2009 | Исправлено: ForposT_ForeveR, 20:21 19-06-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for /f "tokens=*" %%i in (file.txt) do call:copy "%%i"
    goto:eof
     
    :copy
    set /a cnt+=1
    xcopy /i /e /c /q "C:\%cnt%" %1
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:06 19-06-2009
    ForposT_ForeveR



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

    Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 21:20 19-06-2009 | Исправлено: ForposT_ForeveR, 22:07 19-06-2009
    01MDM



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

    Код:
     
    xcopy /i /e /c /q "C:\%cnt%" "%~1\dir"  
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:06 19-06-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно выделить путь батника из переменной %0 ? Или другим образом получить путь где лежит батник.

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 22:54 19-06-2009
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:29 19-06-2009
    vitaliy91

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

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 02:23 20-06-2009
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    специально для тебя - модифицированный код подсчета строк который игнорирует последнюю строку если она пустая.
    Быстродействие не пострадало
    Для всех остальных - правильный способ подсчета строк на предыдущей странице.

    Код:
    FOR /F "TOKENS=1,2 DELIMS=: " %%i IN ('^(TYPE 1.txt^&ECHO MY_STING_TO_DETECTION^)^|findstr /N /L /C:"MY_STING_TO_DETECTION"') DO IF "%%j"=="MY_STING_TO_DETECTION" (SET /A "LAST=%%i-1") ELSE (SET "last=%%i")

    код проверки быстродействия
     
    Добавлено:
    И на всякий случай предвидя возможные возражения: вышеуказанный код игнорирует последнюю строку если она состоит только из пробелов (ну wolf0425 их может не увидеть ), а нижестоящий код будет считать стоку непустой если в ней есть хотя бы один пробел:
    Код:
    FOR /F "TOKENS=1,2 DELIMS=:" %%i IN ('^(TYPE 1.txt^&ECHO MY_STING_TO_DETECTION^)^|findstr /N /L /C:"MY_STING_TO_DETECTION"') DO IF "%%j"=="MY_STING_TO_DETECTION " (SET /A "LAST=%%i-1") ELSE (SET "last=%%i")


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 13:00 20-06-2009 | Исправлено: yurkesha, 13:10 20-06-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