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

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

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

    Всего записей: 4 | Зарегистр. 21-05-2009 | Отправлено: 16:38 21-05-2009
    tatuchipapa

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день!
    Ищу решение. Нужно ребутить точку доступа(ECB-3610-S) при отсутствии инета. Через телнет, вручную ребутися, но вдобавок нужно каждый раз набирать логин, пароль.
    С батниками не сталкивался, из всего что нарыл, нужен бат файл который бы проверял наличие инета каждые 60 сек. при отсутствии вызывал телнет с ребутом.  
    Огромное спасибо!

    Всего записей: 48 | Зарегистр. 07-08-2007 | Отправлено: 16:48 21-05-2009 | Исправлено: tatuchipapa, 16:50 21-05-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Capitolyst
    А какого рода должен быть отчет, приведи пример.
    И если файл был создан а потом удален, в отчете должно быть отражено что его создали а потом удалили. Другими словами как часто должно сравниваться список раз в месяц?

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 17:08 21-05-2009
    Capitolyst

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я понимаю задачу так:
    имеется папка с фаилами и "нашим" батником,который раз в месяц выдает отчет только об измененных фаилах и ничего больше.
    Сеичас сижу и парюсь, пробую вот как dir/a-d/o-d>6.txt  

    Всего записей: 4 | Зарегистр. 21-05-2009 | Отправлено: 17:25 21-05-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    tatuchipapa
    Думаю что вот так, проверить не могу

    Код:
    @echo off
    :loop
    ping ya.ru | find "TTL=" 1>nul 2>&1
    if errorlevel 1 (
      rasdial ECB-3610-S /disconnect
      rasdial ECB-3610-S user password
    )
    ping -n 61 localhost 1>nul 2>&1
    goto :loop

     
    Добавлено:
    Capitolyst
    Не парься лучше нормально объясни.
    Отчет об измененных файлах вида: создан\удален
    Созданы:
    hi.txt
    skdha.txt
     
    Удалены:
    users.txt
     
    Если по другому, то пример приведи, на каком уровне идет изменении, и пожалуйста поконкретнее

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 17:25 21-05-2009 | Исправлено: HaK1R, 17:30 21-05-2009
    Capitolyst

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Короче говоря отчет должен быть следующего вида: фаил создан/изменен андерстенд

    Всего записей: 4 | Зарегистр. 21-05-2009 | Отправлено: 17:49 21-05-2009
    DJLyolik

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

    Всего записей: 461 | Зарегистр. 09-07-2005 | Отправлено: 18:05 21-05-2009
    strat

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    DJLyolik
     
    надо батник обозвать не как ftp.bat а напрмиер ftp1.bat

    Всего записей: 459 | Зарегистр. 27-12-2005 | Отправлено: 18:17 21-05-2009
    NIKZZZZ



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

    Цитата:
    FTP-клиентом, который вызывается командой ftp.

    И конечно, батник то-же называется ftp, который сам себя и вызывает.  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:20 21-05-2009
    DJLyolik

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    strat
    ыыыы )) спасибо
    NIKZZZZ
    во я затупил

    Всего записей: 461 | Зарегистр. 09-07-2005 | Отправлено: 18:53 21-05-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Capitolyst
    Такой подойдет, или надо контролировать изменение файлов?

    Код:
    @echo off
    set "MainWay=%CD%"
    echo Step 1: The analysis of files on the computer.
    echo Step 2: Comparison of lists.
    :GETstep
    set /p "STEP=Enter a step: "
    if "%STEP%."=="1." (goto :1)
    if "%STEP%."=="2." (goto :2)
    goto :GETstep
     
    :1
    set "FileName=%date:.=-%.txt"
    chcp 1251>nul
    call :RecordOfFiles "%MainWay%" ""
    chcp 866>nul
    goto :EOF
     
    :2
    echo The first file should be created before the second file.
    set /p "FileName1=Enter a name of the first file "
    set /p "FileName2=Enter a name of the second file "
    set "FileReport=Report.txt"
    echo Please wait...
    chcp 1251>nul
    call :ComparisonOfFiles
    chcp 866>nul
    start "" %SystemRoot\system32\notepad.exe% "%FileReport%"
    goto :EOF
     
    :ComparisonOfFiles
    echo Create:>%FileReport%
    for /f "tokens=*" %%i in (%FileName2%) do (
      find /i "%%~i" "%FileName1%" 1>nul 2>&1
      if errorlevel 1 (echo "%%~i">>%FileReport%)
    )
    echo.>>%FileReport%
    echo Delete:>>%FileReport%
    for /f "tokens=*" %%i in (%FileName1%) do (
      find /i "%%~i" "%FileName2%" 1>nul 2>&1
      if errorlevel 1 (echo "%%~i">>%FileReport%)
    )
    goto :EOF
     
    :RecordOfFiles
    pushd "%~1"
    dir /a-d /b>nul 2>&1
    if not errorlevel 1 (
      for /f "tokens=*" %%i in ('dir /a-d /b') do (
        if "%~2."=="." (
          echo "%%i">>"%MainWay%\%FileName%"
        ) else (
          echo "%~2\%%i">>"%MainWay%\%FileName%"
        )
      )
    )
    dir /ad /b>nul 2>&1
    if not errorlevel 1 (
      for /f "tokens=*" %%i in ('dir /ad /b') do (
        if "%~2."=="." (
          echo "%%i\">>"%MainWay%\%FileName%"
          call :RecordOfFiles "%%~fi" "%%i"
        ) else (
          echo "%~2\%%i\">>"%MainWay%\%FileName%"
          call :RecordOfFiles "%%~fi" "%~2\%%i"
        )
      )
    )
    popd
    goto :EOF
     

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 19:06 21-05-2009
    tatuchipapa

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

    Цитата:
    Думаю что вот так, проверить не могу

     
    При выполнении пишет:
     
    Отсутствуют подключения
    Команда успешно завершена.
     
    Ошибка службы удалённого доступа 623 - Системе не удалось найти запись телефонной книги для этого подключения.
     
    ...
     
    Возможно если бы поключение было через роутер, такой бы батник сработал...
     
    если вместо rasdial прописать telnet ?

    Всего записей: 48 | Зарегистр. 07-08-2007 | Отправлено: 19:32 21-05-2009 | Исправлено: tatuchipapa, 19:39 21-05-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    tatuchipapa
    какой у тебя тип соединения?
     
    Добавлено:
    tatuchipapa

    Цитата:
    если вместо rasdial прописать telnet

    это зависит от типа соединения, попробуй

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 19:54 21-05-2009
    tatuchipapa

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

    Цитата:
    какой у тебя тип соединения?

    точка доступа просто раздаёт по LAN инет на 1 комп. Инет(ADSL) подключен через роутер  на втором конце (9км), там всё работает не зависает.  
     
    проверил, прописал в батнике telnet, вместо дисконект внутреннюю команду точки для телнета Rebt

    Код:
    @echo off  
    :loop  
    ping ya.ru | find "TTL=" 1>nul 2>&1  
    if errorlevel 1 (  
      telnet 192.168.0.103 /Rebt  
      telnet 192.168.0.103 admin root  
    )  
    ping -n 61 localhost 1>nul 2>&1  
    goto :loop

     
     
    после запуска батник ругнулся набором крокозяблов...  

    Всего записей: 48 | Зарегистр. 07-08-2007 | Отправлено: 20:28 21-05-2009 | Исправлено: tatuchipapa, 23:55 21-05-2009
    romrub

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

    Цитата:
    Как вывести объем диска и сколько свободно (или занято) в мегах (или лучше гигах) не используя сторонних утилей для Windows XP?  

    стандартная утилита  freedisk.exe из ResourceKit

    Всего записей: 25 | Зарегистр. 18-03-2009 | Отправлено: 20:32 21-05-2009 | Исправлено: romrub, 20:39 21-05-2009
    HaK1R



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

    Код:
    @echo off
    set "MainWay=%CD%"
    echo Step 1: The analysis of files on the computer.
    echo Step 2: Comparison of lists.
    :GETstep
    set /p "STEP=Enter a step: "
    if "%STEP%."=="1." (goto :1)
    if "%STEP%."=="2." (goto :2)
    goto :GETstep
     
    :1
    set "FileName=%date:.=-%.txt"
    chcp 1251>nul
    call :RecordOfFiles "%MainWay%" ""
    chcp 866>nul
    goto :EOF
     
    :2
    echo The first file should be created before the second file.
    set /p "FileName1=Enter a name of the first file "
    set /p "FileName2=Enter a name of the second file "
    set "FileReport=Report.txt"
    echo Please wait...
    chcp 1251>nul
    call :ComparisonOfFiles
    chcp 866>nul
    start "" %SystemRoot%\system32\notepad.exe "%FileReport%"
    goto :EOF
     
    :ComparisonOfFiles
    for /f "delims=? tokens=1*" %%a in (%FileName2%) do (
      find /i "%%a" "%FileName1%" 1>nul 2>&1
      if errorlevel 1 (
        echo "%%~a" сreate>>%FileReport%
      ) else (
        find /i "%%a?%%b" "%FileName1%" 1>nul 2>&1
        if errorlevel 1 (
          echo "%%~a" сhange>>%FileReport%
        )
      )
    )
    goto :EOF
     
    :RecordOfFiles
    pushd "%~1"
    dir /a-d /b 1>nul 2>&1
    if not errorlevel 1 (
      for /f "tokens=*" %%i in ('dir /a-d /b') do (
        if "%~2."=="." (
          (echo %%i?%%~ti)>>"%MainWay%\%FileName%"
        ) else (
          (echo %~2\%%i?%%~ti)>>"%MainWay%\%FileName%"
        )
      )
    )
    dir /ad /b 1>nul 2>&1
    if not errorlevel 1 (
      for /f "tokens=*" %%i in ('dir /ad /b') do (
        if "%~2."=="." (
          call :RecordOfFiles "%%~fi" "%%i"
        ) else (
          call :RecordOfFiles "%%~fi" "%~2\%%i"
        )
      )
    )
    popd
    goto :EOF
     

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 22:27 21-05-2009 | Исправлено: HaK1R, 23:19 21-05-2009
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HaK1R
    описка
    Код:
    start "" %SystemRoot\system32\notepad.exe% "%FileReport%"
    имелось в виду
    Код:
    start "" %SystemRoot%\system32\notepad.exe "%FileReport%"

    И еще возможная проблема:
    Код:
     echo %%i?%%~ti>>"%MainWay%\%FileName%"  
        ) else (  
          echo %~2\%%i?%%~ti>>"%MainWay%\%FileName%"
    я бы советовал наверное так:
    Код:
     (echo %%i?%%~ti)>>"%MainWay%\%FileName%"  
        ) else (  
          (echo %~2\%%i?%%~ti)>>"%MainWay%\%FileName%"
    так как не совсем предсказуемо поведение такого кода при значениях %%~ti которые имеют на конце 1 или 2.

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 22:59 21-05-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    yurkesha
    Верно подметил
     
    Добавлено:
    Спасибо

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    HaK1R
    И кстати 1>nul - это на самом деле надо брать на вооружение! Такое перенаправление как раз страхует от потери последнего символа 1 или 2 в исполняемой строке! Маст хэв!

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 23:11 21-05-2009
    HaK1R



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

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 23:15 21-05-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