Loops 通过批处理读取csv文件以创建用户
我是一名IT专业的学生。我试图在我的windows server 2008虚拟机中创建用户,我认为这应该是一种比逐个创建更好的方法,然后我发现我可以使用一个数据库(在这种情况下是csv)和一个循环脚本创建用户。但由于我对命令和批处理文件的知识水平较低,我无法实现我的目标。这是csv文件中的内容:Loops 通过批处理读取csv文件以创建用户,loops,csv,batch-file,windows-server-2008,Loops,Csv,Batch File,Windows Server 2008,我是一名IT专业的学生。我试图在我的windows server 2008虚拟机中创建用户,我认为这应该是一种比逐个创建更好的方法,然后我发现我可以使用一个数据库(在这种情况下是csv)和一个循环脚本创建用户。但由于我对命令和批处理文件的知识水平较低,我无法实现我的目标。这是csv文件中的内容: Pedro,12345,939293c Juanjo,23456,213123v Eufrasio,34567,2131312b Dani,45678,123213n Pepe,56789,12344v
Pedro,12345,939293c
Juanjo,23456,213123v
Eufrasio,34567,2131312b
Dani,45678,123213n
Pepe,56789,12344v
Manolo,67891,12312567b
这是我做的一批,我被卡在回声部分,命令没有读到
SET LOCAL
@echo incio del script
set n1=
set n2=
set n3=
for /F "tokens=1,2,3* delims=," %%i in (Libro2.csv) do (
set "n1=%%i"
set "n2=%%j"
set "n3=%%k"
echo %n1 %n2 %n3
)
pause
批处理中的变量引用为
%var%
,而不是%var
但是在块中(介于(
和)
之间),您需要启用延迟扩展以显示当前值(如果您在块中更改它们):
稍微更改一下脚本:
SETLOCAL enabledelayedexpansion
@echo incio del script
set n1=
set n2=
set n3=
for /F "tokens=1,2,3 delims=," %%i in (Libro2.csv) do (
set "n1=%%i"
set "n2=%%j"
set "n3=%%k"
echo %%i %%j %%k
echo !n1! !%n2! !%n3!
)
(注意:您可以直接使用for
-变量-请参阅块中的第一个回显)
(注意:
tokens=1,2,3,*
表示:对于第四个token,使用该行的其余部分。此处您并不真正需要它,因为您不使用%%l
)在控制台窗口中,输入net help user
。这将帮助您了解如何处理%i
、%j
和%k
。%n1
%n2
和%n3
变量在循环的中没有延迟扩展将无法工作(并不是说%n1
无论如何都是可以接受的,批处理变量是作为%n1%
等进行检索的)。但是您确实不需要将%i
%j
和%k
重新分配给新变量。只需按原样使用它们即可。
SETLOCAL enabledelayedexpansion
@echo incio del script
set n1=
set n2=
set n3=
for /F "tokens=1,2,3 delims=," %%i in (Libro2.csv) do (
set "n1=%%i"
set "n2=%%j"
set "n3=%%k"
echo %%i %%j %%k
echo !n1! !%n2! !%n3!
)