WinSCP नि: शुल्क एसएफटीपी, एससीपी और एफ़टीपी क्लाइंट, इस लेख द्वारा प्रदर्शित तकनीकों में विंडोज एसएफटीपी फाइल ट्रांसफर के लिए आपके लिए कार्यान्वित किया गया है। इन तकनीकों को अपने दम पर लागू करने के लिए विधानसभा का उपयोग करने की सिफारिश की जाती है। यह मार्गदर्शिका का वर्णन है कि WinSCP का उपयोग करते हुए आवेदन में एसएफटीपी हस्तांतरण को कैसे लागू किया जाए। WinSCP स्क्रिप्टिंग इंटरफ़ेस के साथ एसएफटीपी क्लाइंट है जिसका उपयोग आप कई कार्यों को स्वचालित करने के लिए कर सकते हैं, जिसमें यह फ़ाइल ट्रांसफ़र, सिंक्रनाइज़ेशन और अन्य शामिल है। तो WinSCP ही कोई लाइब्रेरी नहीं है (उदा। विधानसभा) जिसे आप सीधे कॉल कर सकते हैं यद्यपि यह मार्गदर्शिका आपको दिखाती हैं कि कोड का मूल उपयोग कैसे करें। शुरू करने से पहले शुरू करने से पहले आपको चाहिए: WinSCP WinSCP प्रक्रिया चलाने से WinSCP का उपयोग करें winscp का उपयोग करें System. Diagnostics. Process चलाने के लिए यह वर्ग किसी भी निष्पादन योग्य चलने की अनुमति देता है, संभवत: अपने मानक इनपुट और आउटपुट को कोड से सुलभ स्ट्रीम तक पुनर्निर्देशित करता है। नीचे दिए गए कोड को उम्मीद है कि winscp (ProcessStartInfo. FileName) वर्तमान कार्य निर्देशिका में या खोज पथ में पाई जा सकती है। आपको पूर्ण पथ प्रदान करना होगा अन्यथा। मानक इनपुट का उपयोग करते हुए स्क्रिप्टिंग आदेशों को खिलाना आप स्क्रिप्टिंग कमांड फ़ीड करने के लिए मानक इनपुट रीडायरेक्शन (प्रोसेस्टस्टार्टइनफ़ो.रेडरेस्ट स्टैंडर्ड इन्पुट) का उपयोग कर सकते हैं। अस्थायी स्क्रिप्ट फ़ाइल को इकट्ठा करने की आवश्यकता को दूर करना .1) मानक इनपुट उपयोग करने के लिए आदेश फ़ीड करने के लिए प्रक्रिया। मानक इनपुट स्ट्रीम: WinSCP प्रक्रिया के आउटपुट को कैप्चर करना जबकि आप WinSCP प्रक्रिया के मानक आउटपुट को रीडायरेक्ट कर सकते हैं, यह वास्तव में बहुत उपयोगी नहीं है, क्योंकि WinSCP का आउटपुट नहीं है कोई पूर्वनिर्धारित रूप है (पार्स नहीं किया जा सकता है) यद्यपि इसे कब्जा करने के लिए उपयोगी हो सकता है, अगर आप इसे अपने जीयूआई में एक उपयोगकर्ता या नैदानिक प्रयोजनों के लिए दिखाना चाहते हैं यदि आप आउटपुट एकत्र करना चाहते हैं, तो WinSCP (ProcessStartInfo. RedirectStandardOutput) शुरू करने से पहले मानक आउटपुट पुनर्निर्देशित करें और आउटपुट स्ट्रीम (Process. StandardOutput) से पढ़ें। स्क्रिप्ट चल रहा है, जबकि आप लगातार उत्पादन इकट्ठा करने की जरूरत है आउटपुट स्ट्रीम में सीमित क्षमता है। एक बार भरे जाने के बाद, WinSCP निशुल्क स्थान की प्रतीक्षा कर रहा है, कभी खत्म नहीं कर रहा है। इसका मतलब है कि आप प्रक्रिया का उपयोग नहीं कर सकते। प्रतीक्षा करने के लिए स्क्रिप्ट का इंतजार करें सुविधाजनक विकल्प स्ट्रीमरेडर है। रीडइंड। लॉग फ़ाइल का उपयोग स्क्रिप्ट के परिणाम कैप्चर करने के लिए, आप XML लॉगिंग का उपयोग कर सकते हैं। इसके लिए आपको एक्सएमएलॉग कमांड लाइन पैरामीटर (प्रोसेस्टटार्टइनफ़ो.अर्जग्राम) का उपयोग कर लॉग फाइल को स्टोर करने के लिए WinSCP को निर्देशित करने की आवश्यकता है। ध्यान दें कि इससे पहले कि आप पेडी-आधारित पार्सर (जैसे एक्सएमएलडीकास्ट या एक्सपीथडॉक्यूमेंट) की तरह एक्सएमएल लॉग फाइल पढ़ने और पार्स करने शुरू कर सकें, आपको वन्ससैप को खत्म करने के लिए इंतजार करना होगा। नीचे उदाहरण देखें। यदि आपको लगातार लॉग फ़ाइल को पढ़ने की आवश्यकता है, तो आपको स्ट्रीम आधारित पार्सर (जैसे XmlReader) का उपयोग करने की आवश्यकता है। उदाहरण देखें निम्नलिखित उदाहरण से पता चलता है कि XPathDocument का उपयोग करके पेड़-आधारित पार्सिंग का उपयोग कैसे करें। त्रुटि के मामले में आप किसी भी जुड़े त्रुटि संदेश को प्राप्त करने के लिए संदेश तत्वों की जांच कर सकते हैं: सफलता के मामले में, आप उदा। एलएस तत्व के अंदर एलएस कमांड द्वारा उत्पन्न डायरेक्टरी लिस्टिंग निकालें: स्क्रिप्ट के लिए प्रतीक्षा की जा रही है प्रक्रिया का उपयोग करें। WaitForExit को समाप्त करने के लिए WinSCP प्रक्रिया की प्रतीक्षा करें यदि आपके पास आउटपुट स्ट्रीम रीडायरेक्ट है, तो आपको पहले आउटपुट स्ट्रीम को अंत तक पढ़ना होगा। एक अच्छा अभ्यास भी इनपुट स्ट्रीम को बंद करना है, अगर आपने इसे रीडायरेक्ट किया है निकास कोड जांचना एक बार WinSCP स्क्रिप्ट समाप्त हो जाती है, प्रक्रिया की निकास कोड (Process. ExitCode) की जांच करें: एलीना: आपके उत्तर के लिए धन्यवाद। इस MSDN डॉक्टर (msdn. microsoften-uslibraryhellip) के निचले भाग में कुछ नोट्स हैं जो संभावित डेडलॉक के बारे में चेतावनी देते हैं यदि आप दोनों रीडायरेक्ट किए गए स्टडआउट और स्टर्डर धाराओं के अंत में पढ़ते हैं तो सिंक्रोनस रूप से। यह कहना मुश्किल है कि क्या आपका समाधान इस मुद्दे के लिए अतिसंवेदनशील है। साथ ही, ऐसा प्रतीत होता है कि आप प्रक्रिया 39 stdoutstaderr आउटपुट को वापस इनपुट के रूप में भेज रहे हैं। क्यूं कर। ) ndash मैथ्यू पियाट 26 सितंबर 16 4:42 यह 4.5 और बाद के संस्करण के लिए एक और आधुनिक उम्मीदवार, कार्य समानांतर पुस्तकालय (टीपीएल) आधारित समाधान है। उपयोग का उदाहरण कार्यान्वयन 5 अक्टूबर को 10 बजे उत्तर दिया गया I बात यह है कि यह सरल और बेहतर तरीका है (हमें ऑटोआरससेट एवेन्ट की ज़रूरत नहीं है): उत्तर 14 जून 12 बजे 14:29 उत्तर दिया गया है, लेकिन आप ऐसा नहीं करना चाहिए. फ़ाइलनाम पथ quotggsci. exequot quot अपने कोड को सरल बनाने के लिए या शायद कुछ quotecho कमांड के बराबर path quotggsci. exequot का पालन करने के लिए obeycommand. txtquot का पालन करें अगर आप वास्तव में एक अलग obeycommand. txt फ़ाइल का उपयोग नहीं करना चाहते हैं ndash Amit Naidu Jun 4 13 at 22:03 आपके समाधान में ऑटोआरससेटएवेंट की ज़रूरत नहीं है लेकिन आप चुनाव करते हैं। जब आप इवेंट का उपयोग करने के बजाय पोल करते हैं (जब वे उपलब्ध होते हैं) तो आप बिना किसी कारण के लिए सीपीयू का उपयोग कर रहे हैं और इससे पता चलता है कि आप खराब प्रोग्रामर हैं AutoResetEvent का उपयोग करते हुए अन्य के साथ तुलना में आपका समाधान वास्तव में खराब है। (लेकिन मैंने आपको -1 नहीं दिया क्योंकि आपने मदद करने की कोशिश की है)। ndash एरिक Ouellet 7 नवंबर 14 पर 18:38 मैं एक ही मुद्दा रहा था, लेकिन कारण अलग था हालांकि यह विंडोज 8 के तहत होगा, लेकिन विंडोज 7 के तहत नहीं। निम्नलिखित पंक्ति ने समस्या का कारण देखा है। समाधान UseShellExecute को अक्षम करने के लिए नहीं था अब मुझे एक शेल पॉपअप विंडो मिली है, जो अवांछित है, लेकिन कुछ खास नहीं होने की प्रतीक्षा करने वाले कार्यक्रम से बेहतर है। तो मैंने इसके लिए निम्नलिखित कार्य-जोड़ा जोड़ा: अब मुझे केवल परेशानी का कारण यह है कि विंडोज 8 के तहत ऐसा क्यों हो रहा है पहली जगह पर। 13 जनवरी को 10:35 को उत्तर दिया मैंने एक ऐसा वर्ग बनाने की कोशिश की जो आपकी समस्या को हल करेगी जो अकसरसोनस स्ट्रीम का उपयोग करते हुए मार्क बियरर्स, रोब, स्टीवज्यू उत्तर लेते हुए आपकी समस्या को हल करेंगे। ऐसा करने से मुझे एहसास हुआ कि एसिंक्रोनस प्रोसेस आउटपुट स्ट्रीम से संबंधित एक बग पढ़ा गया है। आप ऐसा नहीं कर सकते: आपको सिस्टम प्राप्त होगा। अज्ञातऑपरेशन अपवाद मानकऑटो को पुनः निर्देशित नहीं किया गया है या प्रक्रिया अभी तक शुरू नहीं हुई है। फिर आपको प्रक्रिया शुरू होने के बाद एसिंक्रोनस आउटपुट को पढ़ना होगा: ऐसा करने से, रेस की स्थिति बनाओ क्योंकि आउटपुट स्ट्रीम आपको एसिंक्रोनस में सेट करने से पहले डेटा प्राप्त कर सकता है: तब कुछ लोग कह सकते हैं कि आपको स्ट्रीम से पहले ही पढ़ना होगा इसे अतुल्यकालिक से सेट करें लेकिन यही समस्या तब होती है तुल्यकालिक पढ़ने के बीच एक दौड़ की स्थिति होगी और स्ट्रीम को अतुल्यकालिक मोड में सेट किया जाएगा। वास्तविक प्रक्रिया में एक प्रक्रिया के आउटपुट स्ट्रीम के सुरक्षित असिंक्रोनस पठन को प्राप्त करने का कोई तरीका नहीं है, प्रक्रिया और प्रक्रिया स्टार्टइन्फो तैयार की गई है। आप संभावित रूप से अतुल्यकालिक पठन का उपयोग कर रहे हैं जैसे आपके केस के लिए अन्य उपयोगकर्ताओं द्वारा सुझाई गई। लेकिन आपको पता होना चाहिए कि दौड़ की स्थिति के कारण आप कुछ जानकारी याद कर सकते हैं।
No comments:
Post a Comment