2016-02-02 2 views
1

У меня есть переменная (% ms%), которая дает результат пинга, такого как 0ms, 134ms, 1828ms, ect.Как удалить буквы из переменной?

В основном я хочу удалить «ms» конца переменной.

+1

Что провоцирующий вопрос? Если вы хотите выполнить ping-хосты и получить информацию о результатах, используйте PowerShell («Test-Connection») вместо того, чтобы пытаться разбирать строки в пакетном файле. –

+0

Посмотрите на 'set /?', Который буквально перечисляет эту точную ситуацию: * '% PATH: ~ 0, -2%' будет извлекать все, кроме последних двух символов переменной PATH. * –

ответ

0

Вы можете удалить последние N символы из переменных с помощью пакетной переменной подстроки синтаксиса %var:~,-n%, что означает «расширение вара с начала строки на N символы конца минус».

D:\>echo %ms% 
1280ms 

D:\>echo %ms:~,-2% 
1280 
0

Легче всего было бы:

@echo off 
set "ms=19ms" 
set "ms=%ms:ms=%" 
echo %ms% 
pause 

Синтаксис этого set "result=%oldvariable:stringToFind=stringToReplace%"

Для получения дополнительной информации об этом, смотрите here

+0

Просто побочный комментарий - вы оказываете плохую услугу людям, которые пытаются отладить свои сценарии, когда вы поощряете их подавлять всю отладочную информацию в первой строке сценария. –

+0

@RyanBemrose, хотя вы правы в том, что '@echo off' не пригодится при отладке, общепринятой практикой является поставить ее в верхней части скриптов в ответах, поэтому пример дает нормальный ожидаемый вывод без ненужного« нежелательного »кода, вывод". Например, см. [Последний ответ на пакетный вопрос с пакетным скриптом в нем] (http://stackoverflow.com/a/35162954/5022761) –