我必须配置一个附带1-4个磁盘的SAS控制器。 因此,我必须知道驱动器连接在哪个插槽中。 我可以解决这个问题,结果是一个包含最小1和最多4个条目的文本文件。
现在我想读取这个文件的每一行并将它们转换为系统变量。 这是我的尝试:
for /f %%i in (disp.txt) do (
set slot_1=%%i
set slot_2=%%j
set slot_3=%%k
set slot_4=%%l
)
结果就是这个
Slot_1=3
Slot_2=%j
Slot_3=%l
Slot_4=%l
我做错了什么?
P.S .: 是的,我找到BATCH/CMD: Print each line of a .txt into a variable - 但它不一样
P.P.S .: disp.txt看起来像这样:
1
2
3
4
答案 0 :(得分:0)
你所拥有的不起作用的原因是因为FOR /F ... IN (filename) DO ...
将对文件的每一行进行操作(将其拆分为记录)并将第一条记录分配给%i
。因此,%i
将被设置为1,2,3,4(你的dist.txt示例),每次循环一次。
您可以在要分配的变量名称中使用变量值(尽管在FOR循环中这样做需要启用延迟变量扩展,但请查找!
而不是%
来访问变量)。
此脚本的修改版本可能会执行您想要的操作:
SETLOCAL ENABLEDELAYEDEXPANSION
SET IDX=1
FOR /F %%i IN (disp.txt) DO (
SET "slot_!IDX!=%%i"
SET /A IDX+=1
)
它适用于disp.txt中的任意行数。