2009-03-30 3 views
0

Как избавиться от средних пробелов в переменной окружения?Как избавиться от средних пробелов в переменной окружения

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

for /f "tokens=3" %%i in ('dir ^| find "Dir(s)"') do set size=%%i 

приведет что-то вроде этого

C:\>set size=129,028,096 

Я хотел бы избавиться от разделителей следующим образом.

for /f "delims=," %%i in ('echo %size%') do set size=%%i 

и в результате что-то вроде этого

set size=129 028 096 

Как я могу получить его без каких-либо середины пробелов или разделителей с родными инструментами?

ответ

1

Вы можете использовать

set size=%size: =% 

впоследствии, который заменит все пробелы корыта.

Но вы также можете сделать это с помощью запятых :)

Но имейте в виду, что (а) изменения разделителей, это точка для меня, а не запятая. Это может зависеть от языка ОС или региональных настроек. И (б) вы не можете делать математику с этим значением после того, как cmd ограничивается подписанной 32-битной математикой (с использованием set /a).

Ваш второй оператор for не будет работать должным образом, между прочим, поскольку он просто установит size в последнюю группу цифр. Это можно обойти, но я предпочел бы посоветовать использовать замену непосредственно на запятые/точек:

set size=%size:,=% 
set size=%size:.=% 
+0

Большое спасибо то будет выдающийся могу я сделать это в одном шаге – 2009-03-30 22:50:21

+0

спасибо большое – 2009-03-30 22:53:30

+0

Меньше чем две строки, вероятно, нет. Но это должно быть достаточно коротким. Вы можете попытаться использовать токенизацию, а затем просто конкатенировать каждый токен, но в зависимости от вашего размера жесткого диска, который может привести к одному токену более или менее ... конечно, не идеально. Я бы пошел с вашей первой строкой, а затем заменил все запятые. – Joey

Смежные вопросы