DSGET - 确定是否找不到匹配项

时间:2016-06-20 19:46:51

标签: batch-file

我在批处理文件中有以下代码来返回给定的用户电子邮件地址:

for /f "tokens=1-3" %%A in (users.txt) do (
dsquery user -name "*%%A*, *%%C*"|dsget user -email >> result.txt
)

它工作正常,但我希望对以下内容有所帮助:

1 - 确定是否找不到匹配项并输出合适的行到结果文件中,例如:echo No match found for %%A, %%B >> results.txt

2 - 我想删除DSGET的所有附加输出,例如:DSGET succeeded和'email',只留下电子邮件地址?

1 个答案:

答案 0 :(得分:0)

经过一些试验和错误后,我得到了以下内容,以便为我提供所需的输出:

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1-3" %%A in (users.txt) do (
dsquery user -name "%%A, %%B* *%%C*" |dsget user -email |findstr "succeeded"

if !errorlevel!== 0 (
for /f "tokens=*" %%a in ('dsquery user -name "%%A, %%B* *%%C*" ^|dsget user -email ^|findstr /v "email" ^|findstr /v "dsget"') do @echo %%a >> result.txt)

if !errorlevel!== 1 echo Match Not found %%A, %%B >> result.txt
)