मैं कंसोल विंडो के अलावा सीएमडी विंडो पर सी # कोड के माध्यम से एक कमांड निष्पादित करने की कोशिश कर रहा हूं (Ctrl + F5 पर खुलता है)। कमांड निष्पादित करने पर यह उपयोगकर्ता नाम और पासवर्ड मांगता है। अब, मैं एक-एक करके उपयोगकर्ता नाम और पासवर्ड कैसे पास करूं।
और प्रक्रिया पूरी होने पर यह आउटपुट की 2 लाइनें उत्पन्न करता है जिसे बाद में उपयोग करने के लिए सी # कोड के अंदर पढ़ा जाना है। अब तक लिखा गया अद्यतन कोड इस प्रकार दिया गया है:

using System;
using System.IO;
using System.Diagnostics;

namespace ios
{
   class Program
   {
        static void Main(string[] args)
        {
            ProcessStartInfo procStartInfo = new ProcessStartInfo();
            procStartInfo.FileName = "cmd.exe";
            procStartInfo.Arguments = "/C java -jar Reporter.jar p=Reporter.properties m=Normal Sales.viewToken";
            procStartInfo.UseShellExecute = false;
            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.RedirectStandardError = true;
            procStartInfo.RedirectStandardInput = true;

            using (Process process = new Process())
            {
                process.StartInfo = procStartInfo;
                process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler);
                process.Start();
                StreamWriter streamWriter = process.StandardInput;
                streamWriter.WriteLine("myusername");
                streamWriter.WriteLine("password");

                streamWriter.Close();
                process.BeginErrorReadLine();
                process.WaitForExit();
           }
       }

       static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
       {
           Console.WriteLine("Output shown : " + outLine.Data);
           if (outLine.Data != null && outLine.Data.Contains("AccessToken"))
           {
                Console.WriteLine("Line Echoed : " + outLine.Data);
           }
           if (outLine.Data != null && outLine.Data.Contains("Expiration Date"))
           {
                Console.WriteLine("Line Echoed : " + outLine.Data);
           }
       }
   }
}  

अब, यह अन्य आदेशों के साथ पूरी तरह से काम कर रहा है। लेकिन जो आदेश मैंने दिखाया है (java -jar Reporter.jar p=Reporter.properties m=Normal Sales.viewToken) अपेक्षित रूप से इनपुट नहीं ले रहा है। यह इस प्रोग्राम को निष्पादित करने पर कोई आउटपुट नहीं दिखाता है। मैं इनपुट कैसे पास कर सकता हूं और आउटपुट को स्टोर कर सकता हूं?

-1
vivekm91 31 अगस्त 2017, 12:30

3 जवाब

आपके आदेश के लिए आउटपुट स्ट्रिंग्स:

cmd.StandartInput.WriteLine("Please Input UserName:");

स्ट्रिंग प्राप्त करें जो उपयोगकर्ता कमांड में इनपुट करते हैं:

string s_UserName = cmd.StandardOutput.ReadToEnd();

और पासवर्ड के लिए भी यही।

1
BarryLib 31 अगस्त 2017, 12:41

अपना प्रोसेसस बेस स्ट्रीम प्राप्त करें:

StreamWriter sw = cmd.StandardInput
StreamReader sr = sr.StandardOutput

भेजना/पढ़ना उतना ही आसान है जितना कि sr.ReadLine, sw.Writeline !

0
Kinxil 31 अगस्त 2017, 12:35

इनपुट/आउटपुट पुनर्निर्देशन का उपयोग करें

cmd.StartInfo.RedirectStandardInput = true;

cmd.StartInfo.RedirectStandardOutput = true;

और प्रक्रिया को पढ़ने/लिखने के लिए cmd.StandardInput और cmd.StandardOutput का उपयोग करें।

0
Titian Cernicova-Dragomir 31 अगस्त 2017, 12:37
मैंने आपके सुझावों को अपनी परियोजना में लागू किया और कुछ और शोध किया। मुझे पता चला कि मानक इनपुट अधिकांश इंटरैक्टिव cmd कमांड के साथ काम कर रहा है। लेकिन मेरी समस्या अभी भी बनी हुई है यानी मैं इस विशिष्ट कमांड को स्वचालित रूप से इनपुट प्रदान करने में सक्षम नहीं हूं (java -jar Reporter.jar p=Reporter.properties m=Normal Sales.viewToken)। मैंने अपना समस्या विवरण अपडेट कर दिया है।
 – 
vivekm91
2 सितंबर 2017, 15:02
तो यह अन्य आदेशों के लिए इनपुट लेता है? सिर्फ इस विशेष के लिए यह काम नहीं करता है?
 – 
Titian Cernicova-Dragomir
2 सितंबर 2017, 15:08
हाँ .. बिल्कुल ... अन्य आदेशों के लिए यह ठीक काम कर रहा है, यह इनपुट लेता है। लेकिन इस विशेष कमांड के लिए यह इनपुट नहीं लेता है।
 – 
vivekm91
2 सितंबर 2017, 15:12
एक मौका है क्योंकि वे उपयोगकर्ता/पास के लिए पूछ रहे हैं कि वे जानबूझकर इस दृष्टिकोण की अनुमति नहीं देते हैं, लेकिन मैं निश्चित रूप से नहीं जानता, मैं इस दृष्टिकोण का उपयोग किसी अन्य विंडोज़ कमांड के साथ करने का प्रयास करूंगा जो उपयोगकर्ता/पास मांगता है
 – 
Titian Cernicova-Dragomir
2 सितंबर 2017, 15:15