我正在构建一个查询AD的批处理文件,将结果导入到.txt文件中,然后使用for/f循环来解析和规范.txt文件。我遇到了一些并发症,并希望有其他的眼睛看看它。利用cmd的“for/f”解析和规范化文件
此外,使用VBS解析/归一化,而不是笨重的/ f?会更好吗?
批次:
@echo off
echo **********************************************
echo * This batch file will query members of a DL *
echo **********************************************
echo.
set /p gn=Enter DL to get Members:
echo.
CHOICE /C:12 /M "Choose 1 for DOMAIN1 query, Choose 2 for DOMAIN2 query."
IF ERRORLEVEL 2 GOTO Label2
IF ERRORLEVEL 1 GOTO Label1
:Label1
dsquery group DC=DOMAIN1,DC=NET -name "%gn%" | dsget group -members -expand >> "%gn%"List.txt
set fn = "%gn%"List.txt"
GOTO End
:Label2
dsquery group DC=DOMAIN2,DC=NET -name "%gn%" | dsget group -members -expand >> "%gn%"List.txt
set fn = "%gn%"List.txt"
GOTO End
:End
for /f "delims=, tokens=1,2" %i in ('more %fn%') do @ echo %i
下面是创建的.txt文件的几个示例行:
"CN=LastName1\, FirstName1,OU=OU1,OU=OUSUB1,DC=DOMAIN1,DC=net"
"CN=LongLastName1\, LongFirstName1,OU=OU1,OU=OUSUB1,DC=DOMAIN1,DC=net"
"CN=LastName2, FirstName2,OU=OU1,OU=OUSUB1,DC=DOMAIN1,DC=net"
在for循环中,我划定的逗号。从我的示例代码中,我打算将令牌1存储为“CN = LastName1 \”,将令牌2存储为FirstName1,然后从那里开始,但这是我卡住的位置。我的for循环出错,“fni此时出乎意料” 。这是事做逃脱从单引号%FN%变量
('more %fn%')
感谢。
如果你使用'在(%FN%)的',而不是会发生什么'在( '更加%FN%')'?请注意,如果%fn%可能包含空格,那么您需要使用usebackq选项和'in(“%fn%”)''。 – Neil
请注意,'%i'在批处理脚本中不起作用。你必须使用'%% i'。 –