У меня есть текстовый файл со списком имен серверов (server.txt), который выглядит примерно так:
сервер1 сервер2 сервер3
У меня есть ощущение, что это можно сделать с помощью команды FOR, поскольку я использую ее для выполнения действия с каждым именем в файле, но я не совсем уверен, как использовать разделители для этого.
for /F "tokens=*" %%G in (servers.txt) do (
SET machinenum = <magic here>
ECHO %machinenum%
)
ожидаемый результат
01 02 03
Вот как вы бы сделали это в своем примере. Увеличьте размер токена (1-8) для любого количества серверов. Если вы не знаете, сколько серверов у вас будет, было бы намного проще разместить каждый сервер на отдельной линии.
for /f "tokens=1-3 delims=server" %%a in ('type server.txt') do set machinenum=0%%a0%%b0%%c
echo %machinenum%
Если это фактический пакетный файл, используйте двойной %%. Если это из командной строки, используйте единственный%
Вам нужно будет установить РАЗРЕШЕННОЕ РАСШИРЕНИЕ чтобы заставить эту работу.
Заполнение нулем сложно. Вы можете попробовать:
setlocal ENABLEDELAYEDEXPANSION
@echo off
for %%a in (00 01 02 03 04 05 06 07 08 09) do (
set machinenum=
@set machinenum=%%a
@echo !machinenum!
)
Если ноль не нужен, вы получаете некоторую гибкость (при условии 20 серверов):
setlocal ENABLEDELAYEDEXPANSION
@echo off
for /l %%a in (1,1,20) do (
set machinenum=
@set machinenum=%%a
@echo !machinenum!
)