2010-02-05 8 views
6

मैं एक परियोजना में LAME कमांड लाइन एमपी 3 एन्कोडर का उपयोग कर रहा हूँ। मैं यह देखने में सक्षम होना चाहता हूं कि कोई संस्करण किस संस्करण का उपयोग कर रहा है। अगर मैं कोई paramaters मैं मिलता है, उदाहरण के लिए के साथ LAME.exe निष्पादित करें:मैं कमांड लाइन टेक्स्ट कैप्चर कैसे करूं जो stdout पर नहीं भेजा गया है?

C:\LAME>LAME.exe 
LAME 32-bits version 3.98.2 (http://www.mp3dev.org/) 

usage: blah blah 
blah blah 

C:\LAME> 

अगर मैं का उपयोग कर एक पाठ फ़ाइल> एक पाठ करने के लिए उत्पादन पुनः निर्देशित कोशिश फ़ाइल पाठ फ़ाइल खाली है। सिस्टम का उपयोग करते समय इसे चलाने के दौरान यह टेक्स्ट कहां से पहुंच योग्य है। सी # में प्रोसेस?

उत्तर

0

का उपयोग कर यह शायद stderr उपयोग कर रहा है इसे बाहर की कोशिश करो। cmd.exe आपको stderr को रीडायरेक्ट करने की अनुमति नहीं देता है, और एकमात्र तरीका जिसे मैंने कभी भी रीडायरेक्ट किया है, यह एक djgpp टूल के साथ है।

+0

क्या मैं देख सकता हूं कि सी # में सिस्टम.प्रोसेस का उपयोग कर? मैं अब इसे देख लूंगा। – Dave

+0

शायद मैं गलत हूं, यह http://support.microsoft.com/kb/110930 कहता है कि आप अब stderr को रीडायरेक्ट कर सकते हैं। –

+0

जो cmd का उपयोग करके हमेशा संभव रहा है –

3

यह stdout के बजाय stderr के लिए आउटपुट हो सकता है। आप redirect stderr कर सकते हैं करने से:

LAME.exe 2> textfile.txt 

इस जानकारी प्रदर्शित करता है, तो लंगड़ा मानक त्रुटि धारा के लिए outputting है। यदि आप सी # में एक रैपर लिखते हैं, तो आप standard error और ProcessStartInfo से आउटपुट स्ट्रीम को रीडायरेक्ट कर सकते हैं।

1
 System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.EnableRaisingEvents = false; 
     proc.StartInfo.FileName = @"C:\LAME\LAME.exe"; 
     proc.StartInfo.RedirectStandardError = true; 
     proc.StartInfo.UseShellExecute = false; 

     proc.Start(); 
     string output = proc.StandardError.ReadToEnd(); 


     proc.WaitForExit(); 

     MessageBox.Show(output); 

काम किया। सबको शुक्रीया!

संबंधित मुद्दे