How to send output of Information[] command to a text file?

I am having little hard time sending output of Information[] command to a text file.

I'd like to find what is the correct way to do this. I tried the following 3 things, including what is in the above link, but nothing worked for me. I am using version 8.0.4 on windows 7.

s = OpenWrite["test.txt", FormatType -> OutputForm] (*without FormatType also error*)
$Post = Write[#, s] & Information["DSolve", LongForm -> False] Close[s]$Post =.


second attempt

s = OpenWrite["test.txt"]
$Output = s Information["DSolve", LongForm -> False] Close[s]  Third attempt (using the same solution given in the above link) output = OpenWrite["out.txt", FormatType -> OutputForm];$PrePrint = (Write[output, #]; #) &;
Information["DSolve", LongForm -> False]


I see the file out.txt gets created, but it is empty. Nothing is written to it. Even after I close Mathematica or the kernel, it is empty. I also get an error when I close it

Close[output]  (*Write::noopen: "Cannot open OutputStream["out.txt",19]"*)


Basically, I want to issue many commands in my notebook, in the form of Information[...] for many topics, and I want this otuput to go to a text file to process later.

What would be the right way to do this?

thanks,

edit

fyi, this is the final version. A small example, to show how it is now working: (this is part of a larger code I use to generate all the symbols in all packages in Mathematica). I was cleaning it to get ready to run it when V 9 is out.

Get["UtilitiesCleanSlate"]
SetOptions[CleanSlate, Verbose -> False];
addOnPackages = {"ANOVA", "Audio"};
output = OpenWrite["info.txt", FormatType -> OutputForm, PageWidth -> Infinity];
$Output = output;$Urgent = output;

Do[{
Print["<", packageName];
Get[packageName <> ""];
funs = Names[packageName <> "*"];
Information[#, LongForm -> False] & /@ funs;
CleanSlate[Evaluate[packageName <> ""]]
}, {i, 1, Length[addOnPackages]}
];

Close[output];


Thanks for Todd and Mike help in this.

update 12/1/2012

FYI,

Based on what I learned from the replies here, I made this little function that allows one to capture the output from ? on command into a string. (if you want ?? output, then just change the LongForm->False to LongForm->True (will update this function later to add this as an option to the call. But for now, just to give an idea)

help[fun_String] := Module[{s, file},
SetDirectory[NotebookDirectory[]];
file = OpenWrite["s.txt", FormatType -> OutputForm, PageWidth -> Infinity];
Block[{$Urgent = file}, Information[fun, LongForm -> False] ]; Close[file]; Import["s.txt"] ]  To use it s = help["DSolve"];  and now s is a string of what would have gone to screen. - 2 Answers The output from Information[] gets sent to the $Urgent stream. Here is how you can capture it:

infoFile = OpenWrite["info.txt", FormatType -> OutputForm, PageWidth -> Infinity]

Block[{$Urgent = infoFile}, Information["DSolve", LongForm -> False] ] Close[infoFile]  Note that I used PageWidth->Infinity. This results in possibly (?) cleaner formatting in the file. It depends on how you want to process it. - Nice one! Where is this documented? – WalkingRandomly Nov 27 '12 at 16:29 I don't think it is documented. Maybe somewhere. I tried DownValues[Information] and saw some tinkering with $Urgent in the definition, which tipped me off. –  Todd Gayley Nov 27 '12 at 16:43
Even better than finding it in the docs. I've never used DownValues[] before...useful too, thank you. –  WalkingRandomly Nov 27 '12 at 16:58
@WalkingRandomly you could have a look at this post for more info on DownValues mathematica.stackexchange.com/q/96/66 or this one verbeia.com/mathematica/tips/HTMLLinks/Tricks_Misc_4.html –  faysou Nov 27 '12 at 17:27

The following works for me

output = OpenWrite["C:\\Users\\Mike Croucher\\outtest3.txt", FormatType -> OutputForm];
$Output = output Print["hello"] Close[output];  I get the word 'hello' in outtest3.txt. However, the following does not work output = OpenWrite["C:\\Users\\Mike Croucher\\outtest4.txt", FormatType -> OutputForm];$Output = output
Information["DSolve", LongForm -> False];
Close[output];


I get an empty file. According to the documentation, the output from Information[] is a side effect but it seems to work in a different way to the side effect produced by Print[]. After much mucking around with all kinds of settings I decided to cheat.

Create a simple text file called info.m using Notepad that contains

Information["DSolve", LongForm -> False];


Open up a Windows command prompt and pass this directly to the kernel, redirecting output to a text file:

"C:\Program Files\Wolfram Research\Mathematica\8.0\math.exe" < info.m > output.txt


The text file contains

Mathematica 8.0 for Microsoft Windows (64-bit)
Copyright 1988-2011 Wolfram Research, Inc.

In[1]:= DSolve[eqn, y, x] solves a differential equation for the function y
, with independent variable x
. DSolve[{eqn , eqn , …}, {y , y , …}, x]
1     2        1   2
solves a list of differential equations. DSolve[eqn, y, {x , x , …}]
1   2
solves a partial differential equation.

In[2]:=
`

It's very messy but at least it gets you some text you can post-process. Is the above any use do you think?

-
You are welcome. Life would be made much easier if Wolfram made Information produce normal output instead of a side effect. –  WalkingRandomly Nov 27 '12 at 13:14