Loops 通过批处理读取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

我是一名IT专业的学生。我试图在我的windows server 2008虚拟机中创建用户,我认为这应该是一种比逐个创建更好的方法,然后我发现我可以使用一个数据库(在这种情况下是csv)和一个循环脚本创建用户。但由于我对命令和批处理文件的知识水平较低,我无法实现我的目标。这是csv文件中的内容:

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