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

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



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

    Цитата:
    | - выполняется следующая команда, если предыдущая выполнена успешно ?

    Нет. "|" - это символ конвейера. То есть вывод команды слева от ""|" передается на вход команды справа.
     

    Цитата:
    То что пинг не проходит на mail.ru; rambler.ru; microsoft.com; google.com и другие хосты - следствие их защиты?

    Понятия не имею. Это могут быть твои локальные заморочки, провайдера, этих хостов или чего-нибудь другого. У меня из того списка, который ты привел, не пингуется только microsoft.  


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:17 18-05-2008
    JI063uk



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помдскажите плиз где тут ошибка
     
    @echo off
    for /f "tokens=*" %%i in (1.txt) do (
    shutdown  -m "\\%%i" -s -f -t 40 -c "текст"
    )

    Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 13:53 19-05-2008
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JI063uk
    А что не работает
     
    Кстати писать в двух темах (эта и Командная строка, батники, сценарии (bat, cmd) 2) не обязательно )
    Все равно будут помогать одни и теже

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:10 19-05-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли с помощью cmd комманд/утилит извлекать/изменять информацию, находящуюся в свойствах файла на вкладке "Сводка" (WinXP)???

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 15:10 19-05-2008
    JI063uk



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

    Цитата:
    KapralBel

     
    это я уже понял просто запарился  
    А батник не запускаеться и все тут моргнет черный экран и все

    Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 15:13 19-05-2008 | Исправлено: JI063uk, 15:39 19-05-2008
    Serg41

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день. У меня экзотичный вопрос, реально ли такое и как сделать:
     
    меняется файл сервер и вся инфа будет лежать по другому пути, например было \\server1\dat\... стало \\server2\data...
     
    вопрос:
    -как поменять у всех пользователей путь в ярлыках, при условии что они у них хранятся локально - это 1
    -как поменять ссылки на файлы в Excel файликах (т.е. в формулах) - это 2
     
    Вот такая заморочка

    Всего записей: 77 | Зарегистр. 18-09-2006 | Отправлено: 16:21 19-05-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Serg41
    IMHO это не сюда, вам к гуру VB-Script нужно.
     
    to ALL
    Ресурс по CMD командам и утилитам.
    Там же по WMIC

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 16:27 19-05-2008 | Исправлено: Joolz, 18:04 19-05-2008
    el mentiroso



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Не знаю надо кому или нет:
    батник удаляет файлы старше определенного числа дней. маска файлов, целевая папка и число дней задаются параметрами
    fixed mk II

    Код:
     
    @echo off  
     
    if "%1" == "" (
        @echo Пропущен обязательный параметр: папка с файлами
        set err=1
    )
    if "%2" == "" (
        @echo Пропущен обязательный параметр: маска файла
        set err=1
    )
    if "%3" == "" (
        @echo Пропущен обязательный параметр: число дней
        set err=1
    )
    if "%err%"=="1" (echo Пример использования: %~nx0 c:\temp\ ^*.tmp 7
            goto :eof)
    set /a opt3=%3
    if "%date:~3,1%"=="0" (
        set c_mm=%date:~4,1%
    ) else (
    set c_mm=%date:~3,2%)
     
    if "%date:~0,1%"=="0" (
        set c_dd=%date:~1,1%
    ) else (
    set c_dd=%date:~0,2%)
     
    set /a c_date=%date:~6,4%*365+%c_mm%*30+%c_dd%
     
    For %%a In (%~dp1%2) Do @Call :killall %%a %%~ta
    GoTo :EOF  
    :killall
    set f_name=%1
    set f_date=%2
     
    if "%f_date:~3,1%"=="0" (
        set f_mm=%f_date:~4,1%
    ) else (
    set f_mm=%f_date:~3,2%)
     
    if "%f_date:~0,1%"=="0" (
        set f_dd=%f_date:~1,1%
    ) else (
    set f_dd=%f_date:~0,2%)
     
    set /a f_date=%f_date:~6,4%*365+%f_mm%*30+%f_dd%
    set /a d_calc=%c_date%-%f_date%
    if /i %d_calc% GEQ %opt3% del %f_name%
    GoTo :EOF

    Всего записей: 61 | Зарегистр. 05-12-2006 | Отправлено: 17:59 19-05-2008 | Исправлено: el mentiroso, 08:59 20-05-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    el mentiroso
    Ты уверен, что твой алгоритм работает правильно?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:27 19-05-2008
    igor_andreev

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

    Цитата:
    set /a d_calc=%c_date%-%f_date%  

    19 мая 2008 сегодня, c_date равен 20080519
    Файл создан(ну и изменен) 20 дней назад, 30 апреля 2008, f_date равен 20080430
    А теперь отними, 20080519-20080430. d_calc будет равен однако 89, а не 20
    Такая вот печальная стори

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 18:44 19-05-2008 | Исправлено: igor_andreev, 18:50 19-05-2008
    01MDM



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

    Код:
     
    %3=10
    с_date=20080401
    f_date=20080331
     
    set /a d_calc=20080401-20080331
     
    if /i 70 GEQ 10 del %f_name%
     
     

     
    Однодневный файл удалится..
     
    add
     
    Как все сразу отреагировали
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:50 19-05-2008 | Исправлено: 01MDM, 18:51 19-05-2008
    king_stiven

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

    Цитата:
    Как все сразу отреагировали

    Да ведь всё это уже в шапке есть, и есть уже вполне надёжные скрипты, работающие вне зависимости от оси. Хотя если кому то хочется попрактиковаться, а не для работы, пожалуйста.

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 21:09 19-05-2008
    spstoyan



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что-то сбилось в настройках кодировки...
    Если создать BAT-файл с одной строкой
    @echo абвгде
    и потом его запустить, то на экран выводится
    рстуфх
    Причем если эту же команду набрать напрямую из командной строки - все отображается нормально...
    Подскажите, где искать, как вылечить?
    ОС Windows XP pro rus SP2, других проблем с кодировкой не наблюдается...

    Всего записей: 1 | Зарегистр. 10-08-2005 | Отправлено: 23:07 19-05-2008
    king_stiven

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

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 23:45 19-05-2008
    KapralBel



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

    Код:
     
    @Echo Off
    chcp 1251
    echo русские буквы
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 00:29 20-05-2008
    el mentiroso



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Что-то да, проглядел косяки
    Сам вчера порыскал по форуму, не нашел ничего по теме, надо было удалять файлы старше 7 дней от текущей даты.
     
    Собственно, исправить косяк достаточно легко, всего лишь нужно перевести дату в число дней, например:

    Код:
     
    set /a c_date=%date:~6,4%*365+%date:~3,2%*30+%date:~0,2%
     


    Всего записей: 61 | Зарегистр. 05-12-2006 | Отправлено: 07:43 20-05-2008 | Исправлено: el mentiroso, 07:55 20-05-2008
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    el mentiroso
    1. Забыл что есть високосные года
    2. проверь свой код на дате 2008-авг-09 - будешь в шоке

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 08:16 20-05-2008
    el mentiroso



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Високосные года не забыл, а намеряно заигнорил. Впрочем как и реальное число дней в месяце.
    Угумс, есть еще и такой подводный камень.
     
    Надеюсь окончательный вариант:
     

    Код:
     
    @echo off  
    if "%1" == "" (
        @echo Пропущен обязательный параметр: папка с файлами
        set err=1
    )
    if "%2" == "" (
        @echo Пропущен обязательный параметр: маска файла
        set err=1
    )
    if "%3" == "" (
        @echo Пропущен обязательный параметр: число дней
        set err=1
    )
    if "%err%"=="1" (echo Пример использования: %~nx0 c:\temp\ ^*.tmp 7
            goto :eof)
    set /a opt3=%3
    if "%date:~3,1%"=="0" (
        set c_mm=%date:~4,1%
    ) else (
    set c_mm=%date:~3,2%)
     
    if "%date:~0,1%"=="0" (
        set c_dd=%date:~1,1%
    ) else (
    set c_dd=%date:~0,2%)
     
    set /a c_date=%date:~6,4%*365+%c_mm%*30+%c_dd%
     
    For %%a In (%~dp1%2) Do @Call :killall %%a %%~ta
    GoTo :EOF  
    :killall
    set f_name=%1
    set f_date=%2
     
    if "%f_date:~3,1%"=="0" (
        set f_mm=%f_date:~4,1%
    ) else (
    set f_mm=%f_date:~3,2%)
     
    if "%f_date:~0,1%"=="0" (
        set f_dd=%f_date:~1,1%
    ) else (
    set f_dd=%f_date:~0,2%)
     
    set /a f_date=%f_date:~6,4%*365+%f_mm%*30+%f_dd%
    set /a d_calc=%c_date%-%f_date%
    if /i %d_calc% GEQ %opt3% del %f_name%
    GoTo :EOF
     

    Всего записей: 61 | Зарегистр. 05-12-2006 | Отправлено: 09:01 20-05-2008
    z1riser

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вот такая задачка...
    Есть текстовый файл, в нем лог с нумерацией строк
     
    ....
    32    17:20:26    [service]:    Загрузка ...
    33    17:20:26    [service]:    Доступные !CRC $FD084D1F6E2CB6CA
    34    17:20:26    [service]:    Загрузка !CRC $FE803AEA6DC960A3
    35    17:20:26    [service]:    Загрузка .... (всего 1).    !CRC $BFF09103C9665636
    36    17:20:26    [kassa]:    2008-05-19:!CRC $E0CD8B5B555F4037
    37    17:24:17    [server]:
     
    Задача...
    из последней строки файла, взять число (в данный момент 37) и запихнуть его в нужный мне раздел реестра(возможно придется перевести его в 16тиричку.. типа dword)...

    Всего записей: 22 | Зарегистр. 09-07-2007 | Отправлено: 10:31 20-05-2008 | Исправлено: z1riser, 10:33 20-05-2008
    Joolz

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

    Код:
    for /f "tokens=1,*" %i in ('tail.exe -n 1 log.txt') do REG ADD HKLM\Software\Program /v Data /t REG_DWORD /d %i

    Только нужно линуксовую утилитку tail скачать и в PATH прописать.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 11:20 20-05-2008 | Исправлено: Joolz, 11:23 20-05-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