从文本文件设置变量

时间:2014-02-17 13:43:25

标签: batch-file cmd

我有以下内容:

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”离开了“

1 个答案:

答案 0 :(得分:2)

您正在阻止声明%error%

中使用for ... in (...) do (this is a block)

一次性评估一个块,但是您正在更改块内的变量。 要获取更改的变量,请使用延迟扩展: 在脚本开始时写

setlocal enabledelayedexpansion

并在块内部使用(更改的)值!error!代替%error%

更改

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

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

应该解决您的问题(与setlocal enabledelayedexpansion一起)。