Comment faire pour enregistrer les sorties STDOUT vers un fichier texte?

J'ai un programme qui utilise une 3ème partie de la ligne de commande outil pour générer des journaux. La 3ème partie génère sa sortie à la sortie standard (STDOUT), dont l'utilisateur doit alors utiliser le " > test.txt" commande pour enregistrer le fichier.

Mais le programme en quelque sorte génère une certaine quantité de rapports générés, mais pas la totalité du rapport. Ce test a été fait en utilisant la commande

C:\Test\ftk\ripxp>ripxp.exe -r C:\test\ftk\ntuser.dat -d "C:\System Volume\_rest
ore{BB12863B-2C77-46C9-BCDA-1810E52F1089}" -p runmru > C:\test\test05.txt

sur la console de ligne de commande qui fonctionne sur le logiciel qui ne fonctionne que partiellement.

Les erreurs ont été rétréci vers le bas pour soit les arguments de l'erreur ou de l'enregistrement du fichier d'erreur de la partie (streamReader). Par conséquent, l'erreur peut être due à la STDOUT n'est pas correctement enregistré.

Donc quelqu'un peut-il veuillez vous informer sur les codes? Merci!

Les Arguments pour la 3ème partie de l'outil(2008 H. Carvey):

RipXP v.20081001 - CLI RegRipper tool
RipXP [-r Reg hive file] [-p plugin module][-d RP dir][-lgh]
Parse Windows Registry files, using either a single module from the plugins folder.
Then parse all corresponding hive files from the XP Restore Points (extracted from
image) using the same plugin.

-r Reg hive file...Registry hive file to parse
-g ................Guess the hive file (experimental)
-d RP directory....Path to the Restore Point directory
-p plugin module...use only this module
-l ................list all plugins
-h.................Help (print this information)

Ex: C:\>rip -g
C:\>rip -r d:\cases\ntuser.dat -d d:\cases\svi -p userassist

All output goes to STDOUT; use redirection (ie, > or >>) to output to a file.

copyright 2008 H. Carvey

Les Codes:

static void Main(string[] args)
    {
        //Automatically finds folder that starts with _restore
        DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\System Volume\");
        DirectoryInfo restoreFolder = directoryInfo.GetDirectories().FirstOrDefault(d => d.Name.StartsWith("_restore"));

        //Gets the folder name
        String baka = restoreFolder.Name;

        if (restoreFolder == null)
            throw new DirectoryNotFoundException();

            Process process = new Process();
            process.StartInfo.FileName = @"C:\test\ftk\ripxp\ripxp.exe";
            process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume\" + restoreFolder.Name + " -p runmru";
            process.StartInfo.CreateNoWindow = false;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardInput = true;
            process.StartInfo.RedirectStandardError = true;
            process.Start();

            String text = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume\" +restoreFolder.Name  + " -p runmru";
            Console.WriteLine(baka);
            Console.WriteLine(text);

            //Strangely the program only outputs the first section "-r C:\test\ftk\ntuser.dat" argument results.....
            System.IO.StreamReader reader = process.StandardOutput;
            String sRes = reader.ReadToEnd();
            StreamWriter SW;
            SW = File.CreateText(@"C:\test\test01.txt");
            SW.WriteLine(sRes);
            SW.Close();
            Console.WriteLine("File Created Successfully");
            reader.Close();

    }
Si vous ajoutez Console.Out.Flush(); après Console.WriteLine(text);, voyez-vous, à l'ensemble de la ligne, alors?
Si une autre Console.WriteLine(texte); il a été placé après la Console..Flush(); ensuite, le texte peut être vu.

OriginalL'auteur JavaNoob | 2010-12-14