我有以下内容:
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 :(得分: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
一起)。