批处理文件从文件名中删除数字并将其填充为两位数

批处理文件从文件名中删除数字并将其填充为两位数

我有一个包含服务器名称列表的文本文件(servers.txt),如下所示:

服务器1 服务器2 服务器3

我觉得这可以用 FOR 命令来完成,因为我用它对文件中的每个名称执行操作,但我不太确定如何使用分隔符来完成此操作。

for /F "tokens=*" %%G in (servers.txt) do (  
  SET machinenum = <magic here>
  ECHO %machinenum%
)

预期输出

01 02 03

答案1

以下是您在示例中的操作方法。无论您有多少台服务器,请将令牌设置为更大的值(1-8)。如果您不知道您将拥有多少台服务器,将每台服务器放在自己的行上会容易得多。

for /f "tokens=1-3 delims=server" %%a in ('type server.txt') do set machinenum=0%%a0%%b0%%c
echo %machinenum%

如果这是实际的批处理文件,请使用双 %%。如果来自命令行,请使用单个 %

答案2

您需要设置延时扩展才能让这个工作顺利进行。

用零填充比较困难。您可以尝试:

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!
        )

相关内容