batch-file - 从 csv 创建用户的批处理脚本
问题描述
我无法创建用户,我想将他们名字的第一个字母和他们的整个姓氏作为用户 ID。(我的剧本是法文的)
这里是:
echo off chcp 28591 setlocal enabledelayedexpansion rem je fait la creation de l'ou
for /f "skip=1 tokens=4,5 delims=;" %%A IN (listes_apprenants.csv) DO (
set organisation= %%A set service= %%B
dsadd ou "ou=!organisation!,dc=pme,dc=lan" dsadd ou "ou=!service!,ou=!organisation!,dc=pme,dc=lan" dsadd group "cn=gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" dsadd ou "ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" )
for /f "skip=1 tokens=1,2,3,4,5,6,7,8* delims=;" %%A IN (listes_apprenants.csv) DO (
set prénom= %%A set nom= %%B set site= %%C set organisation= %%D set service= %%E set adresse= %%F set téléphone= %%G set bureau= %%H
dsadd user "cn=!prénom:~0,1!!nom:~0,19!,ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -disabled no -pwd Pilote01 -fn !prénom! -ln !nom! -memberof "gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -dept !site! -tel !téléphone! -office !bureau! -mustchpwd yes )
[第三者编辑]
echo off
chcp 28591
setlocal enabledelayedexpansion
rem je fait la creation de l'ou
for /f "skip=1 tokens=4,5 delims=;" %%A IN (listes_apprenants.csv) DO (
set organisation= %%A
set service= %%B
dsadd ou "ou=!organisation!,dc=pme,dc=lan"
dsadd ou "ou=!service!,ou=!organisation!,dc=pme,dc=lan"
dsadd group "cn=gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan"
dsadd ou "ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan"
)
for /f "skip=1 tokens=1,2,3,4,5,6,7,8* delims=;" %%A IN (listes_apprenants.csv) DO (
set prénom= %%A
set nom= %%B
set site= %%C
set organisation= %%D
set service= %%E
set adresse= %%F
set téléphone= %%G
set bureau= %%H
dsadd user "cn=!prénom:~0,1!!nom:~0,19!,ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -disabled no -pwd Pilote01 -fn !prénom! -ln !nom! -memberof "gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -dept !site! -tel !téléphone! -office !bureau! -mustchpwd yes
)
解决方案
我在编辑中发现了一些错别字,还有一些多余的代码,所以我在这里重新编写它。
除了prenom之外不需要改变任何东西,因为所有其他项目都可以直接使用。
此外,它分配变量的方式是添加空格,这会导致您可能不想要的结果,此外,我们不知道您是否"
在 CSV 中的值周围有双引号,我们不希望在 rheDN
作为一个整体被双引号引起来的字符串,以及我们可能需要在用户字段的字符串上。所以我提供他们。
CN 的“NOM”部分通常是整个姓氏,没有理由将这些限制为 20 个字符。
SAMID 中有 20 个字符的限制,但由于您没有指定 SamID,如果未指定,它会自动生成前 20 个字符。:)
(这是您在输入长用户名时通常在 GUI 中看到的行为)
@(setlocal enabledelayedexpansion
echo off
chcp 28591
rem je fait la creation de l'ou
SET "_Filte=C:\Pah\To\listes_apprenants.csv"
SET "_Base_DN=dc=pme,dc=lan"
)
CALL :Main
( Endlocal
Exit /B
)
:Main
for /f "skip=1 tokens=1-8 delims=;" %%A IN ('
Type "%_File%"
') DO (
dsadd ou "ou=%%~D,%_BaseDN%"
dsadd ou "ou=%%~E,ou=%%~D,%_BaseDN%"
dsadd group "cn=gg_%%~E,ou=%%~E,ou=%%~D,%_BaseDN%"
dsadd ou "ou=utilisateur,ou=%%~E,ou=%%~D,%_BaseDN%"
set "prénom=%%~A"
dsadd user "cn=!prénom:~0,1!%%~B,ou=utilisateur,ou=%%~E,ou=%%~D,%_BaseDN%" -disabled no -pwd Pilote01 -fn "!prénom!" -ln "%%~B" -office "%%~H" -mustchpwd yes -memberof "cn=gg_%%~E,ou=%%~E,ou=%%~D,%_BaseDN%" -dept "%%~C" -tel "%%~G"
)
GOTO :EOF
推荐阅读
- c - 如何知道从哪里获取 ac 程序中使用的头文件?
- javascript - 是否可以在 Blade 模板文件中创建 Vue 单文件组件?
- c# - 目录路径的递归
- angular - 如何使用primeng下拉菜单?
- linux - 如何计算shell中不同列之间的值
- sql-server - 在整个存储过程中重用 Where 条件?
- azure-data-explorer - Kusto 范围函数语义错误:'' 有以下语义错误:未解析的引用绑定:XXX"
- python - 为什么 from code import * 与将相同的代码直接输入 REPL 不同?
- python - 如何调用四分位数?
- django - Django:将字段从 Int / Char 更改为 ForgeinKey