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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    YuS_2



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

    Цитата:
    Можно просто одну цыфру

    Можно. В самом начале пакетного файла надо написать команду  

    Код:
    @echo off

    и вместо  

    Код:
    set i1=%%i

    добавить команду  

    Код:
    есно %%i

    Итого:

    Код:
    @echo off
    c:\jperf-2.0.2\bin\iperf.exe -c 172.16.199.193 > c:\jperf-2.0.2\log.txt  
    for /f "tokens=6" %%i in ('type "c:\jperf-2.0.2\log.txt"^|find /i "Mbits/sec"') do echo %%i
    pause

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:13 21-01-2016
    Vanfear

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Drivishe
     
    чё выдумываешь, там же у тебя у края окна 885, это и есть вывод только числа.
    так проверь если сомневаешься: do echo %%i> "%userprofile%\Desktop\testik.txt"

    Всего записей: 554 | Зарегистр. 24-03-2010 | Отправлено: 19:17 21-01-2016 | Исправлено: Vanfear, 19:20 21-01-2016
    lefrenchle

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

    Всего записей: 2 | Зарегистр. 21-01-2016 | Отправлено: 10:00 22-01-2016
    Drivishe



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2,Vanfear. Спасиб огромное ребят!
     
    Итог !

    Код:
    c:\jperf-2.0.2\bin\iperf.exe -c 172.16.199.193 > c:\jperf-2.0.2\log.txt  
    for /f "tokens=6" %%i in ('type "c:\jperf-2.0.2\log.txt"^|find /i "Mbits/sec"') do set i1=%%i do set i1=%%i & echo %%i> "testik.txt"

     
    Теперь с Zabbix можно проверят нагрузку канала между виндовыми машинами
     

    Всего записей: 37 | Зарегистр. 31-08-2007 | Отправлено: 10:36 22-01-2016 | Исправлено: Drivishe, 10:45 22-01-2016
    Vanfear

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    хаха зачем два раза то?
    я как понял тебе переменная не нужна, тогда такой код будет:

    Код:
     
     
    c:\jperf-2.0.2\bin\iperf.exe -c 172.16.199.193 > "c:\jperf-2.0.2\log.txt"
    for /f "tokens=6" %%i in ('type "c:\jperf-2.0.2\log.txt" ^|find /i "Mbits/sec"') do echo %%i> "testik.txt"
     
     

    Всего записей: 554 | Зарегистр. 24-03-2010 | Отправлено: 15:24 22-01-2016
    RRRRR



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли сделать в данном случае поочередное выполнение "Команда 1" и "Команда 2" для 3 варианта?

    Цитата:
     
    if "%_choice%" == "1" goto Команда 1
    if "%_choice%" == "2" goto Команда 2
    if "%_choice%" == "3" goto Команда 1, Команда 2
     

    но при выборе к примеру "Команда 1" исполнялась только она

    Всего записей: 1313 | Зарегистр. 14-11-2003 | Отправлено: 14:15 23-01-2016 | Исправлено: RRRRR, 14:18 23-01-2016
    YuS_2



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

    Цитата:
    goto Команда 1

    Для начала, выполните и прочитайте:

    Код:
    goto /?

     
    Далее:
    команда1 & команда2 - Используется для разделения нескольких команд в одной командной строке.
    команда1 && команда2 - Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно.
    команда1 || команда2 - Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена.
    (команда1 & команда2) - Используется для группировки или вложения команд.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:03 23-01-2016
    RRRRR



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

    Цитата:
    команда1 & команда2

    хорошо я понял. Я знаком с этим.
     
    Допустим в скрипте есть переменная из-за которой все команды обрабатываются одинаково
    Выглядит это так  
     

    Цитата:
     
    if "%_choice%" == "1"  переменные&&goto win
    if "%_choice%" == "2"  переменные&&goto win
    if "%_choice%" == "3"  переменные&&goto win
     

     
    Тобишь, необходимо запустить их очередность по другим критериям нежели goto. Возможен ли задействовать цифровой порядок?
     
     
     

    Всего записей: 1313 | Зарегистр. 14-11-2003 | Отправлено: 20:48 23-01-2016 | Исправлено: RRRRR, 20:57 23-01-2016
    Vanfear

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не надо мутить, код покажи да и всё. так тебе быстрее юсик поможет)

    Всего записей: 554 | Зарегистр. 24-03-2010 | Отправлено: 21:12 23-01-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    RRRRR
    Цитата:
    goto :label%_choice%
    перейдет на label3 при _choice=3, например

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 23:13 23-01-2016
    YuS_2



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

    Цитата:
    Тобишь, необходимо запустить их очередность по другим критериям нежели goto. Возможен ли задействовать цифровой порядок?

    Вообще, сам по себе, блок условного выполнения команд позволяет использовать набор команд, в том числе различных переходов по команде goto. Всё будет зависеть от конечной цели, что в итоге требуется получить...
    Интерактивный интерфейс для пользователя (ведь не зря же Вы использовали наименование переменной %_choice% ? ) организуется обычно, чтобы выполнять какое-либо конкретное действие в зависимости от введенных пользователем данных. По команде goto, делается переход по метке и там составляется уже набор необходимых команд, в конце которых выполняется переход куда-либо ещё, либо просто выход...
    В данном же случае, не совсем понятна Ваша попытка привязать несколько команд на один конкретный ввод и если бы Вы описали то, что хочется получить, тогда можно было бы сказать что-то более определенное.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:36 24-01-2016 | Исправлено: YuS_2, 10:41 24-01-2016
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RRRRR
    if "%_choice%" == "1" goto com_1
    if "%_choice%" == "2" goto com_2
    if "%_choice%" == "3" (
        call :com_1
        call :com_2
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:03 24-01-2016
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Тут кофейной гущей весь топик можно залить...
    Дело в том, что вот такая постановка задачи:

    Цитата:
    поочередное выполнение "Команда 1" и "Команда 2" для 3 варианта

    несколько противоречит вот этому:

    Цитата:
    но при выборе к примеру "Команда 1" исполнялась только она

    - но судя по всему, человек хочет получить именно какой-то симбиоз... т.е. всё сразу. Есть ещё телепатический запал?

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:09 24-01-2016
    hErAx

    Редактировать | Цитировать | Сообщить модератору
    Интересненько.
    Если "%_choice%" может принимать только три значения, то спрашивать if три раза нет необходимости.
    Если может принимать любые значения, то надо спрашивать четыре раза.
     
    Добавлено:
    ну, не или четыре, или как-то иначе

    Отправлено: 12:26 24-01-2016
    YuS_2



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

    Цитата:
    Если "%_choice%" может принимать только три значения, то спрашивать if три раза нет необходимости.  

    Почему? Тут может понадобиться и большее число раз, это же cmd

    Код:
    @echo off
    :bof
    cls
    set /p _choice="INPUT number (q=quit) 0 OR 1 OR 2 : "
    IF /i "%_choice%"=="" goto bof
    IF /i "%_choice%"=="0" goto 0
    IF /i "%_choice%"=="1" goto 1
    IF /i "%_choice%"=="2" goto 2
    IF /i "%_choice%"=="q" goto eof
    goto bof
     
    :0
    echo input=zero
    pause&&goto bof
     
    :1
    echo input=one
    pause&&goto bof
     
    :2
    echo input=two
    pause&&goto bof

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:46 24-01-2016 | Исправлено: YuS_2, 12:55 24-01-2016
    hErAx

    Редактировать | Цитировать | Сообщить модератору
    теперь делаем, чтобы IF /i "%_choice%"=="2", выполнялись кманды :0 и :1. Готово!
     

    Код:
     
    @echo off
    :bof
    cls
    set /p _choice="INPUT number (q=quit) 0 OR 1 OR 2 : "
    IF /i "%_choice%"=="" goto bof
    IF /i "%_choice%"=="0" goto 0
    IF /i "%_choice%"=="1" goto 1
    IF /i "%_choice%"=="2" goto 0
    IF /i "%_choice%"=="q" goto eof
    goto bof
     
    :0
    echo input=zero
    IF /i "%_choice%"=="2" goto 1
    pause&&goto bof
     
    :1
    echo input=one
    pause&&goto bof
     
    :2
    echo input=two
    pause&&goto bof

    Отправлено: 13:12 24-01-2016
    RRRRR



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

    Цитата:
    - но судя по всему, человек хочет получить именно какой-то симбиоз... т.е. всё сразу.


    Да, Пытаюсь обойти проблему не прибегая к дописыванию исходного кода , он и так разросся. Есть еще таких 5 файлов по крайней мере.  
    Выложил этот скелет, чтобы не отвлекаться от сути, хотя вот мой код
    #
     
    Как видно при выборе all код уходит в цикл. Мне необходимо последней строчкой выполнить все варианты  
     
    Pasha_ZZZ

    Цитата:
    перейдет на label3 при _choice=3, например

    Я так и не понял в каком виде это должно быть подставлено.  
     

    Всего записей: 1313 | Зарегистр. 14-11-2003 | Отправлено: 13:20 24-01-2016 | Исправлено: RRRRR, 16:18 24-01-2016
    hErAx

    Редактировать | Цитировать | Сообщить модератору
    RRRRR
    Как видно, вы умеете применять call - вот и применяйте.
    Вначале вы спрашивали про три строчки if, когда на соамом деле их пять!

    Отправлено: 14:07 24-01-2016
    YuS_2



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

    Цитата:
    Как видно при выборе all код уходит в цикл. Мне необходимо последней строчкой выполнить все варианты

    Не вижу проблемы...  
    вместо:

    Код:
    goto :WinX

    использовать:

    Код:
    ... call :WinX
     
    :Winx
    ...
    exit /b

    в особо критичных местах:
    start /wait
     
    и т.к. в секции ":WinX" присутствует вызов "call :SET", то организовать не переход в ":MENU", а возврат "exit /b"
     
    Добавлено:
    hErAx

    Цитата:
    теперь делаем, чтобы IF /i "%_choice%"=="2", выполнялись кманды :0 и :1. Готово!

    Да, можно и так... просто, чтобы получить решение, необходимо видеть задачу в целом, а когда её не видно, то вариативность будет слишком высока, имхо.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:34 24-01-2016
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот это  что за бардак?
     
    set os=x86&&set boot=boot10&&set WinISO=%Win10%\SW_DVD5_WIN_ENT_10_1511_32BIT_Russian_MLF_X20-82325.iso&&call :Winx
     
    Лучше по русски напишите, что эта строчка должна делать.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:50 24-01-2016
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru