batch file去除文件名和填充两位数字

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

server1 server2 server3

我有一种感觉,这可以用FOR命令来完成,因为我使用它来对文件中的每个名称执行一个操作,但是我不太清楚如何使用分隔符来完成这个操作。

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

预期产出

01 02 03

在你的例子中,你将如何做到这一点。 无论您拥有多less台服务器,请将标记放大(1-8)。 如果你不知道有多less台服务器,那么将每台服务器放在它自己的产品线上会容易得多。

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

如果这是一个实际的batch file,请使用double %%。 如果来自命令行,请使用单个%

您需要设置ENABLEDELAYEDEXPANSION才能使其工作。

用零填充是困难的。 你可以尝试:

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