Назад | Перейти на главную страницу

командный файл для удаления номеров из имени файла и дополнения до двух цифр

У меня есть текстовый файл со списком имен серверов (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!
        )