Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 12

Автор: Vanfear
Дата сообщения: 21.01.2016 18:17
Drivishe

чё выдумываешь, там же у тебя у края окна 885, это и есть вывод только числа.
так проверь если сомневаешься: do echo %%i> "%userprofile%\Desktop\testik.txt"
Автор: lefrenchle
Дата сообщения: 22.01.2016 09:00
нашёл проблему. )))
Автор: Drivishe
Дата сообщения: 22.01.2016 09:36
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"
Автор: Vanfear
Дата сообщения: 22.01.2016 14:24
хаха зачем два раза то?
я как понял тебе переменная не нужна, тогда такой код будет:

Код:

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"

Автор: RRRRR
Дата сообщения: 23.01.2016 13:15
Можно ли сделать в данном случае поочередное выполнение "Команда 1" и "Команда 2" для 3 варианта?

Цитата:

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

но при выборе к примеру "Команда 1" исполнялась только она
Автор: YuS_2
Дата сообщения: 23.01.2016 17:03
RRRRR

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

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

Код: goto /?
Автор: RRRRR
Дата сообщения: 23.01.2016 19:48
YuS_2

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

хорошо я понял. Я знаком с этим.

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


Цитата:

if "%_choice%" == "1" переменные&&goto win
if "%_choice%" == "2" переменные&&goto win
if "%_choice%" == "3" переменные&&goto win


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



Автор: Vanfear
Дата сообщения: 23.01.2016 20:12
не надо мутить, код покажи да и всё. так тебе быстрее юсик поможет)
Автор: Pasha_ZZZ
Дата сообщения: 23.01.2016 22:13
RRRRR
Цитата:
goto :label%_choice%
перейдет на label3 при _choice=3, например
Автор: YuS_2
Дата сообщения: 24.01.2016 09:36
RRRRR

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

Вообще, сам по себе, блок условного выполнения команд позволяет использовать набор команд, в том числе различных переходов по команде goto. Всё будет зависеть от конечной цели, что в итоге требуется получить...
Интерактивный интерфейс для пользователя (ведь не зря же Вы использовали наименование переменной %_choice% ? ) организуется обычно, чтобы выполнять какое-либо конкретное действие в зависимости от введенных пользователем данных. По команде goto, делается переход по метке и там составляется уже набор необходимых команд, в конце которых выполняется переход куда-либо ещё, либо просто выход...
В данном же случае, не совсем понятна Ваша попытка привязать несколько команд на один конкретный ввод и если бы Вы описали то, что хочется получить, тогда можно было бы сказать что-то более определенное.
Автор: king_stiven
Дата сообщения: 24.01.2016 10:03
RRRRR
if "%_choice%" == "1" goto com_1
if "%_choice%" == "2" goto com_2
if "%_choice%" == "3" (
call :com_1
call :com_2
)
Автор: YuS_2
Дата сообщения: 24.01.2016 11:09
king_stiven
Тут кофейной гущей весь топик можно залить...
Дело в том, что вот такая постановка задачи:

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

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

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

- но судя по всему, человек хочет получить именно какой-то симбиоз... т.е. всё сразу. Есть ещё телепатический запал?
Автор: hErAx
Дата сообщения: 24.01.2016 11:26
Интересненько.
Если "%_choice%" может принимать только три значения, то спрашивать if три раза нет необходимости.
Если может принимать любые значения, то надо спрашивать четыре раза.

Добавлено:
ну, не или четыре, или как-то иначе
Автор: YuS_2
Дата сообщения: 24.01.2016 11:46
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
Автор: hErAx
Дата сообщения: 24.01.2016 12:12
теперь делаем, чтобы 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
Автор: RRRRR
Дата сообщения: 24.01.2016 12:20
YuS_2

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


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

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

Pasha_ZZZ

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

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

Автор: hErAx
Дата сообщения: 24.01.2016 13:07
RRRRR
Как видно, вы умеете применять call - вот и применяйте.
Вначале вы спрашивали про три строчки if, когда на соамом деле их пять!
Автор: YuS_2
Дата сообщения: 24.01.2016 13:34
RRRRR

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

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

Код: goto :WinX
Автор: king_stiven
Дата сообщения: 24.01.2016 13:50
Вот это что за бардак?

set os=x86&&set boot=boot10&&set WinISO=%Win10%\SW_DVD5_WIN_ENT_10_1511_32BIT_Russian_MLF_X20-82325.iso&&call :Winx

Лучше по русски напишите, что эта строчка должна делать.
Автор: YuS_2
Дата сообщения: 24.01.2016 13:51
hErAx

Цитата:
Вначале вы спрашивали про три строчки if, когда на соамом деле их пять

Да это ведь не совсем важно, просто человек упростил до минимума... а вот первоначальный вопрос был не совсем понятен:
Поочередное выполнение команд, т.е. в первом проходе к1, во втором к2 и т.д., но и тут же: если выбрана к1, то выполняется только она ... имхо, это каша, которую разобрать по зернышку - задача невыполнимая. А вот в полном коде стало всё более-менее понятно.

Добавлено:
king_stiven

Цитата:
Вот это  что за бардак?

Почему бардак? Куча присваиваний значений переменным, но в одну строку и в конце вызов секции :WinX
Там только кавычки надо бы расставить, ибо спецсимволы же... ну, теоретически могут вылезти
Автор: king_stiven
Дата сообщения: 24.01.2016 13:57
Метки
:MENU
вообще нет в коде.
Автор: hErAx
Дата сообщения: 24.01.2016 14:01
king_stiven
и што?
строки

Код: echo.
echo.
echo ------------------- Интеграция MSDaRT ---------------------------
Автор: king_stiven
Дата сообщения: 24.01.2016 14:04

Цитата:
и што?

Раз нет метки, то и перехода нет на метку.


Цитата:
echo.
echo.
echo ------------------- Интеграция MSDaRT ---------------------------

вообще не выполняются, но на суть это никак не влияет.



Почему не выполняются?
Автор: YuS_2
Дата сообщения: 24.01.2016 14:07
king_stiven

Цитата:
Раз нет метки, то и перехода нет на метку.

Этот код неполный, поэтому и метки нет... там и переменных некоторых нет, в смысле есть попытка раскрыть, но значений нигде не присвоено...

Цитата:
Почему не выполняются?

Потому, что переход goto выше
Автор: king_stiven
Дата сообщения: 24.01.2016 14:24
YuS_2

Цитата:
А вот в полном коде

YuS_2

Цитата:
Этот код неполный

Два взаимоисключающих заявления.


Автор: YuS_2
Дата сообщения: 24.01.2016 14:38
king_stiven

Цитата:
Два взаимоисключающих заявления.

Может и так, но в нашем мире всё относительно...
Относительно первоначальной задачи - код можно назвать полным, но вот относительно корректности, то бишь выполняемости сценария в целом - код не совсем полный. Это становится очевидно после более подробного анализа. Вот такие вот противоречия... такшта, дедушка Альберт был прав со своей теорией, наверное.
Автор: king_stiven
Дата сообщения: 24.01.2016 14:47
YuS_2


Цитата:
такшта, дедушка Альберт был прав со своей теорией, наверное.


Это батники, а не философский раздел, автору надо было привести скелет кода, а не пару костей, тогда телепатить легче. Решений ему приведена масса, в следующий раз, надеюсь, придёт более подготовленным.
Автор: RRRRR
Дата сообщения: 24.01.2016 15:16
YuS_2

Цитата:
exit /b

Работает!
Эхх.... Я вчера пробовал их ставить и не получалось.
Наверно где то накосячил или команду писал неправильно типа exite /b. У меня это часто бывает
Надо больше спать!

king_stiven

Цитата:
Этот код неполный, поэтому и метки нет...

YuS_2 прекрасно все понял и расписал так как есть. Видно, что профи.
Вчера полночи экспериментировал, переписывал концовку, то ставил переход, то убирал. И копипастнул неполный, вернее только, что описание команд, да :MENU чуть выше стоит и все. разве это много меняет?
Автор: YuS_2
Дата сообщения: 24.01.2016 15:42
king_stiven

Цитата:
Это батники, а не философский раздел

Эмм ... я в ступоре. А философия тут при чем? ТО - чистая физика, т.е. наука точная, в отличие от философии...

Цитата:
автору надо было привести скелет кода, а не пару костей, тогда телепатить легче.

Согласен и даже писал о том же, но... это зависит только от автора. А мы тут кофейной гущей и так всё облили...
Автор: MENN
Дата сообщения: 24.01.2016 21:21
Помогите пожалуйста подправить bat

@echo off
rem Estimate date/time in format YYYYMMDDhhmm.ss
rem Skip incorrectness in time earlier than 10:00 - replace of leading whitespaces with '0'
set now=%DATE: =0% %TIME: =0%
rem Disassemble date and time on parts
for /f "tokens=1-7 delims=/-:., " %%a in ( "%now%" ) do (
rem Define your owned delimiters and order of tokens
set now=%%c%%b%%a%%d%%e.%%f
)
rm date.txt
echo %now% >> date.txt

Получаю текущу дату и время в нужном мне формате

201601242040.23

2016 - год
01 - месяц
24 - число
20 - часы
40 - минуты
23 - секунды

Как мне сделать чтобы при выполнении батника "часы" были на 3 часа меньше ?

Страницы: 123456789101112131415161718

Предыдущая тема: Не устанавливаются обои на рабочий стол (Windows 2003 x64)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.