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

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



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 16:39 11-01-2009
    mike345S



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jaguarkpi,
    Случаем cmd-файл не ping называется?

    Всего записей: 550 | Зарегистр. 31-01-2006 | Отправлено: 19:43 11-01-2009
    Mr_Hat



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

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:34 11-01-2009
    jaguarkpi

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Точно, это я протупил, угадали, батник назвал ping.cmd, это он и вызывал сам себя Пол дня искал в чем проблема, а оказывается такую глупую ошибку допустил. Пасиба огромное

    Всего записей: 3 | Зарегистр. 11-01-2009 | Отправлено: 00:04 12-01-2009
    Mr_Hat



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

    Цитата:
    оказывается такую глупую ошибку допустил

     
    По моему все с начала на этом попадаются, я не исключение.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 01:02 12-01-2009
    mike345S



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

    Всего записей: 550 | Зарегистр. 31-01-2006 | Отправлено: 01:27 12-01-2009
    duh_S

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста что тут неправильно, а то он просто пингует независимо есть ответ или нет:  
     
    Код:  
    @Echo Off  
    :BEGIN  
    CHDIR C:\zyxel-reloader  
    SLEEP 600  
    Set cWork=0  
    Call :CompWork 192.168.0.118  
    If %cWork%==0 (Goto :reloader)  
    GoTo :BEGIN  
     
    :CompWork  
    Echo Ping %1  
    Ping -n 3 %1 >Nul  
    If ErrorLevel 1 (Goto :BEGIN)  
    If ErrorLevel 0 (Set cWork=1)  
    GoTo :BEGIN  
     
    :reloader  
    CALL ZTnBatch -h 192.168.1.1 -timeout 15000 -p parol -timeout 15000 -c "sys reboot"  
    GoTo :BEGIN  
     
     
     
    цель кода - перезагрузка шлюза, если он подвис (не отвечает на ping)  
     
    здесь  
     
    Код:  
    ZTnBatch  
     
     
    - утилита доступа к шлюзу  
     
    также вопрос  
     
    Код:  
    Echo Ping %1  
    Ping -n 3 %1 >Nul  
    If ErrorLevel 1 (Goto :BEGIN)  
    If ErrorLevel 0 (Set cWork=1)  
     
     
     
    результатом отсутствия 1,2-ух пингов но при наличии 3-го ErrorLevel 1 или ErrorLevel 0? при отсутствии 3х пингов ErrorLevel 0?

    Всего записей: 66 | Зарегистр. 28-08-2007 | Отправлено: 02:34 12-01-2009
    leomaks

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

    Всего записей: 178 | Зарегистр. 26-05-2003 | Отправлено: 10:14 12-01-2009
    slay1212

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

    Цитата:
    If %cWork%==0 (Goto :reloader)

    Здесь лучше наверное  
    If !cWork!==0 (Goto :reloader)
     Посмотри я делал аналогичный пример он 100 % рабочий. Сделай по аналогии.
     Я Проверял на самом компе если он никого не видел из списка хостов я перегружал у него сетевые интерфейсы командой devcon  
    Подробнее...

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 11:33 12-01-2009 | Исправлено: slay1212, 11:37 12-01-2009
    demon1981



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

    Код:
    for /l %i in (1,1,n) do set var1=......
    получить уникальную переменную var1, если заранее не известно сколько раз цикл будет выполняться?
    заметил, что random в пределах одного батника дает одно и тоже число
    скажем

    Код:
    for /l %i in (1,1,7) do (set var1=%random%&&echo %var1%)

    дает

    Код:
     
    32164
    32164
    32164
    32164
    32164
    32164
    32164
     

    в принципе дата+время до долей секунд бы устроило без знаков разделения (только цифры), но как его получить???

    Всего записей: 189 | Зарегистр. 28-03-2007 | Отправлено: 12:21 12-01-2009 | Исправлено: demon1981, 10:37 13-01-2009
    GTHack



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    почему переприсвоение переменной в цикле не пашет ?
     
    FOR /F "tokens=1 delims= " %%i in (1.txt) do (
    set a=%%i
    echo %a%
    )
     
    пишет "Режим вывода команд на экран (ECHO) отключен."
     
    хотя я хочу просто переприсвоить переменную %%i  в %a%  и вывести на экран  
     
    Добавлено:
    вообще задача такая - в конце рабочего дня нужно гасить все компы кроме определенных
    думал сделать так:
     
    обработать в цикле вывод комманды net view и если строка начинается с \\ и не входит в заданный список - делаем шатдаун
     
    FOR /F "tokens=1 delims= " %%i in ('net view') do (
     
    if not %%i==\\ADMIN if not %%i==\\SERVER if not %%i==\\WSUS echo C:\WINDOWS\system32\shutdown.exe /s /f /m %%i /t 10
     
    }
     
    заминка вышла с проверкой первых 2х символов на "=="
    для обычной переменно было бы так  
     
    if "%i:~0,2%"=="\\" ........ if not %%i==\\ADMIN if not %%i==\\SERVER .....
     
    а в цикле конструкция if "%i:~0,2%"=="\\"  не пашет
     
    help

    ----------
    Мой блог

    Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 14:12 12-01-2009
    Levitant



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте. Давно к вам не заходил, опять требуется помощь.
    Около года назад мне написали как-то следующий скриптик
     
    Код:
    @Echo off  
    ial_  
    ipconfig | Find /i "ppp-unlim">nul || rasphone -d "ppp-unlim"  
    ping -n 601 -w 1000 127.0.0>nul  
    goto ial_

     
    Спас меня просто, огромное спасибо. Данно творение проверят на подключение данное подключение каждые 10 минут, и если не подключено  - переподключает.
    НО теперь есть такой вопрос. Появилось соединение ppp-city. Надо что-бы они работали ОДНОВРЕМЕННО, для этого ВСЕГДА надо, что бы подключение ppp-unlim запускалось ПОСЛЕДНИМ (что бы постоянно его шлюз по умолчанию). Соединения могут отпадать у каждого отдельно или вместе, по-этому уменя возник такой алгоритм, но я не знаю как его реализовать, языком командной строки.
     

    Код:
     
    _метка
    IF ("ppp-unlim" and "ppp-city" отключены), то ("ppp-city" запустить, ЗАТЕМ "ppp-unlim" запустить)
     
    IF ("ppp-unlim" отключён, а "ppp-city" работает), то (подключить "ppp-unlim"),  
          ELSE (
          IF ("ppp-city" отключён, а "ppp-unlim" работает), то ("ppp-unlim" ОТКЛЮЧИТЬ,  
          "ppp-city" включить, "ppp-unlim" включить), ELSE goto _метка
                   )

     
    Очень прошу реализовать такое, а то я нефига не понимаю, пытался но не вышло ничего
             
     

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 15:00 12-01-2009 | Исправлено: Levitant, 15:15 12-01-2009
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Levitant
    По-моему проще отключить назначение шлюза по умолчанию для первого соединения — в настройках tcp/ip для подключения.

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:03 12-01-2009
    Levitant



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

    Цитата:
    Levitant  
    По-моему проще отключить назначение шлюза по умолчанию для первого соединения — в настройках tcp/ip для подключения.

     
     
    Ага, получилось. Большое спасибо, не знал про это.

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 15:18 12-01-2009
    Rotorina



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Nagual
    Спасибо, заработало ))
    Запустил батник Elroir-а, больше по душе оказался тем, что не создает дополнительных файлов.
     
    Не успел обрадовать как столкнулся с следующей ошибкой (при перебрасывании файлов на одном ПК работает замечательно, но с ПК по сети не хочет):

    Цитата:
    Неправильно указан диск.
    Файл не найден.

     
    Код имеет следующий вид:

    Код:
    @echo off  
    Net session \\192.168.0.100 /del
    Net use \\192.168.0.100\1cBackUp /user:User passwd
    for /f "tokens=*" %%a in ('dir /b /o-d /tc "\\192.168.0.100\1cBackUp\1cBase_2009*.zip"') do set "fname=%%a" & goto next  
    :next  
    xcopy "\\192.168.0.100\%fname%" "D:\22\">nul  
    for /f  "skip=1 tokens=*" %%a in ('dir /b /o-d /tc "D:\22\1cBase_2009*.zip"') do del "D:\22\%%a" & goto :EOF

     
    Где споткнулся?
    А вот при выполнении след. команд все работает:

    Код:
    Net use \\192.168.0.100\1cBackUp /user:User passwd
    xcopy \\192.168.0.100\1cBackUp\*.zip D:\

    Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 16:17 12-01-2009 | Исправлено: Rotorina, 16:49 12-01-2009
    GTHack



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    есть файлик  
    test.txt  с содержимым:
    1
    2
    3
     
    есть батник с содержимым:
    echo off
    for /f "delims= tokens=1" %%i in (test.txt) do (
        echo %%i
        set %%j=%%i
        echo %%j
    )
     
    по идее результат должены быть такой
    1
    1
    2
    2
    3
    3
     
    а дает такой
    1
    %j
    2
    %j
    3
    %j
     
    в чем ошибка ?

    Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 19:26 12-01-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GTHack
     
     
    Юзай в шапке
    setlocal enabledelayedexpansion и переменные окружения

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:31 12-01-2009
    GTHack



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    так что ли ? вообще не пашет
     
    setlocal enabledelayedexpansion
    cls
    echo off
    for /f "delims= tokens=1" %%i in (test.txt) do (
        echo !i!
    )
     
    вообще нихрена не печатает

    Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 19:57 12-01-2009 | Исправлено: GTHack, 20:04 12-01-2009
    king_stiven

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

    Код:
    echo off  
    setlocal enabledelayedexpansion
    for /f "delims= tokens=1" %%i in (test.txt) do (
        echo %%i
        set j=%%i
        echo !j!>>1.txt
    )  
     


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:24 12-01-2009
    duh_S

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

    Цитата:
    Цитата:If %cWork%==0 (Goto :reloader)  
     
     
    Здесь лучше наверное  
    If !cWork!==0 (Goto :reloader)  
     Посмотри я делал аналогичный пример он 100 % рабочий. Сделай по аналогии.  
     Я Проверял на самом компе если он никого не видел из списка хостов я перегружал у него сетевые интерфейсы командой devcon  
    Подробнее...

    что-то не получается, также просто строчка  

    Код:
    ping 192.168.0.118...

    поможите плз...

    Всего записей: 66 | Зарегистр. 28-08-2007 | Отправлено: 23:07 12-01-2009 | Исправлено: duh_S, 23:09 12-01-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