Как разобрать и переопределить переменную в командном файле? - PullRequest
1 голос
/ 24 мая 2019

Мне нужно пропинговать несколько ips в моем vlan.
Как я могу разобрать 2-4-значную переменную в xx.xx?

If it is 4 digits(1111), it needs to be redefined as 11.11
If it is 3 digits(222), it needs to be 02.22
If it is 2 digits(77), it needs to be 00.77

Как мне это сделать?

Я пытался подсчитать строки, но я ошибочно ошибся в iy.

SET /P _inputname= Enter Your Input Number(2-4 Digits):
START cmd /k ping 10.%_inputname%.55 /t
START cmd /k ping 10.%_inputname%.66 /t
START cmd /k ping 10.%_inputname%.77 /t

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

Добавить число к нулю, и получить из 4-й последней позиции 2 места, напечатать точку и последние 2 места.

:: Q:\Test\2019\05\24\SO_56298026.cmd
@Echo off
for %%A in (1111,222,77) do call :sub %%A
SET /P _inputname= Enter Your Input Number(2-4 Digits):
Call :sub %_inputname%
goto :Eof

:sub
set var=0000%1
Echo %Var:~-4,2%.%Var:~-2%

Пример вывода:

> Q:\Test\2019\05\24\SO_56298026.cmd
11.11
02.22
00.77
Enter Your Input Number(2-4 Digits):33
00.33
0 голосов
/ 25 мая 2019

Вот еще один способ проверить длину строки, однако он также не позволяет вводить более 4 символов.

@echo off
setlocal EnableDelayedExpansion & set 4max=
:begin
set /p "str=Enter 2-4 digits: "
set "4max=%str:~4,1%
if defined 4max cls & echo you entered to many characters & goto begin
for /l %%i in (0,1,10) do if not "%str%"=="!str:~0,%%i!" (
    set /a ln+=1
 ) else goto :done
:done
if %ln% equ 4 set str=%str:~0,2%.%str:~2,2%
if %ln% equ 3 set str=0%str:~0,1%.%str:~1,2%
if %ln% equ 2 set str=00.%str%
echo(%str%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...