2014-02-17 53 views
1

設置一個變量我有以下幾點:從文本文件

FOR /f "tokens=*" %%a IN (%input%) do (
dsquery * forestroot -filter "(&(mail=%%a))" | dsget user -UPN >> p.txt 2> tmp.txt 
set /p Error=<tmp.txt 
echo %%a %Error% >> log.txt 
) 

點是通過查詢AD,這是沒有問題的,以創建郵件列表用戶名列表。但我也想將錯誤發送到日誌文件,並且當我將temp.txt發送到變量時,似乎沒有什麼工作(我試圖添加「echo%Error%」,並且它所說的是「Echo 。被關」

+0

你能發表一個'tmp.txt'的例子嗎? – Stephan

+0

如果未找到郵件(%% a),通常情況下會顯示如下錯誤: 第一行:'dsget失敗:'此命令的目標對象'丟失。' 第二行:'type dsget /?尋求幫助。' 如果%% a存在tmp.txt將爲空 – Luis

+0

您確定沒有第一個空行嗎? – Stephan

回答

2

你正在一個語句塊一氣呵成for ... in (...) do (this is a block)

塊被評估使用%error%,但你改變了可變塊內 要得到改變的變量,使用延遲擴展: 在您的腳本開始寫

​​

和內部blo CK使用(改變)值與!error!代替%error%

更改

echo %%a %Error% >> log.txt 

echo %%a !Error! >> log.txt 

應該解決您的問題(與setlocal enabledelayedexpansion在一起)。

+1

太棒了!謝謝! :) – Luis