2016-06-20 21 views
0

は私が与えられたユーザーの電子メールアドレスを返すために、バッチファイルに次のコードを持って決定します。DSGET - 一致が見つからない場合

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'だけでメールアドレスを残しておきますか?

+0

使用PowerShellを。例: 'Get-ADUser username -properties mail | Select-Object -ExpandProperty mail' –

+0

@Bill_Stewartありがとうございました。私はPowershellを将来的に使って調査します – Breaker

+0

PowerShellは簡単で、一般的にテキスト解析をする必要はありません。ちょうどあなたが望むプロパティを取得します。 –

答えて

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 
) 
関連する問題