我有一个包含服务器名称列表的文本文件(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!
)