मुझे जावा विधि की आवश्यकता है जो कमांड प्रॉम्प्ट आउटपुट को पढ़ेगा और इसे जावा में पढ़ने के लिए स्ट्रिंग में संग्रहीत करेगा।जावा में स्ट्रिंग करने के लिए कमांड प्रॉम्प्ट आउटपुट प्राप्त करें
यह मेरे पास अभी तक है लेकिन सही काम नहीं कर रहा है।
public void testGetOutput() {
System.out.println("\n\n****This is the testGetOutput Method!****");
String s = null;
String query = "dir " + this.desktop;
try {
Runtime runtime = Runtime.getRuntime();
InputStream input = runtime.exec("cmd /c " + query).getInputStream();
BufferedInputStream buffer = new BufferedInputStream(input);
BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));
String line = "";
try {
while ((line = commandResult.readLine()) != null) {
s += line + "\n";
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}//end testGetOutput()
मुझे लगता है कि समस्या यह है कि जब मैं क्वेरी को परिवर्तित करने के लिए एक आदेश जो HandBrakeCLI.exe निष्पादित करेंगे बनने की कोशिश। प्रोग्राम चल रहा है, लेकिन मेरे सिस्टम को देख रहा है (लेकिन ऐसा लगता है), यह मुझे दिखाता है कि HandBrakeCLI.exe एक cmd विंडो के नीचे चल रहा है जो मेरे आईडीई के तहत चलाया जा रहा है। यह सब समझ में आता है, लेकिन HandBrakeCLI.exe बाहर नहीं निकलता है, इसलिए मुझे लगता है कि मैं आउटपुट को अपने प्रोग्राम में इनपुट के रूप में नहीं पढ़ सकता।
तो, उस पृष्ठभूमि के बाद। मेरा बड़ा सवाल यह है: मैं अपनी क्वेरी के साथ समाप्त होने के बाद बंद करने के लिए HandBrakeCLI.exe कैसे प्राप्त करूं ताकि मैं इसका आउटपुट प्राप्त कर सकूं? बस अतिरिक्त जानकारी के लिए, उपरोक्त विधि और स्कैन डीवीडी विधि के बीच एकमात्र अंतर है जो मेरे पास हैंडब्रेकसीआई के लिए है, क्वेरी वैरिएबल अलग है। इस उदाहरण की तरह:
String query = "C:\Users\Kent\Desktop\HBCLI\HandBrakeCLI -t --scan -i "C:\Users\Kent\Desktop\General Conference DVDs\Sources\174th October 2004\DVD 1"; //this is actually a variable in the DVD object, but here's an example'
ओह, और जिस तरह से, जब मैं एक नियमित रूप से कमांड प्रॉम्प्ट में वह क्वेरी चलाने के लिए, यह वास्तव में करता है मैं यह करने के लिए, मुझे सभी उत्पादन मैं सख्त की इच्छा दे रही है क्या चाहते हैं!
यहाँ मूल समस्या (मुझे यकीन है कि एक सवाल फिर से जमा करने के लिए कैसे नहीं कर रहा हूँ) है:
मैं हर जगह तलाश रहे हैं और इस को समझ नहीं सकता। मुझे यकीन नहीं है कि जो मैंने पाया है वह भी प्रासंगिक है जो मैं करना चाहता हूं। मेरे पास अभी तक बहुत सारे कोड नहीं हैं, इसलिए यह यहां कोड डालने के लिए बहुत कुछ नहीं करेगा और मुझे लगता है कि यह बहुत आसान होना चाहिए, इसलिए मैं यहां कुछ स्क्रीनशॉट देने जा रहा हूं। तो यहाँ मेरी कार्य है:
स्कैन फ़ोल्डर जो फट डीवीडी फ़ोल्डर (VOB फ़ाइलों आदि के साथ video_ts फ़ोल्डर) से भरा हुआ है और डीवीडी के शीर्षक के रूप में इन फ़ोल्डर नाम की दुकान।
हैंडब्रेकसीएलआई का उपयोग करके प्रत्येक फ़ोल्डर को स्कैन करें और आउटपुट को स्ट्रिंग में स्टोर करें।
प्रत्येक शीर्षक, अध्याय और भाषा की पहचान करने के लिए स्ट्रिंग को रीगेक्स करें।
प्रश्नों वापस HandBrakeCLI में भारी मात्रा में एन्कोड करने के लिए प्रत्येक डीवीडी के लिए प्रत्येक शीर्षक में प्रत्येक अध्याय में प्रत्येक भाषा के देने के लिए उत्पन्न (आप देख सकते हैं कारण है कि मैं इस स्वचालित करना चाहते हैं!)
स्टोर एक * में इन प्रश्नों। बल्ले फ़ाइल
एकमात्र भाग जो मुझे यकीन नहीं है चरण 2 है! मैं सबकुछ आसानी से कर सकता हूं। मैंने आउटपुटस्ट्रीम के बारे में बहुत कुछ पढ़ा है, लेकिन मुझे लगता है कि यह कैसे काम करता है यह समझ में नहीं आता है। मुझे वास्तव में आउटपुट को एक स्ट्रिंग में प्राप्त करने की आवश्यकता है जिसे मैं आवश्यक सामग्री प्राप्त करने के लिए regex कर सकता हूं।
इनपुट HandBrakeCLI लिए:
आउटपुट स्कैन करने के लिए: यहाँ मैं क्या मैं इनपुट की जरूरत है और क्या उत्पादन से पट्टी की जरूरत के स्क्रीनशॉट हैं
जारोड, त्वरित प्रतिक्रिया के लिए धन्यवाद! मैं इसे तुरंत लागू करने की कोशिश करूंगा और आपको बताऊंगा कि यह कैसा चल रहा है! – kentcdodds
बिल्कुल सही! मुझे बिल्कुल यकीन नहीं है कि यह कैसे काम करता है। लेकिन मैं इसे समझने के लिए थोड़ा सा देख लूंगा। लेकिन हाँ, यह एक आकर्षण की तरह काम किया! अब मुझे बस उन सभी चीजों को फिर से भरना होगा! वैसे भी, आपकी मदद के लिए एक टन धन्यवाद! ओह, और मुझे यकीन नहीं है कि मेवेन क्या है। मेरा आईडीई नेटबीन है। मुझे सामान जोड़ने की आवश्यकता नहीं थी। एक बार फिर धन्यवाद! आने वाली पीढ़ियों के लिए एक और व्यावहारिक समाधान पोस्ट करने के लिए –
kentcdodds