2011-05-26 11 views
6

से बाहर निकलने के लिए एप्लिकेशन की प्रतीक्षा न करें मेरे पास कई एप्लिकेशन हैं जिन्हें मुझे एक ही समय में खोलने की आवश्यकता है, और एक ही समय में उन्हें लॉन्च करने के लिए स्टार्टअप फ़ोल्डर पर निर्भर होने के बजाय (और इसलिए मैं उन सभी को फिर से खोल सकता हूं अगर कुछ दिन भर कुछ बंद हो गए थे) मैंने लिनक्स के रनलेवल स्टार्टअप लिंक के समान ही शॉर्टकट से भरा फ़ोल्डर बनाया था। Outlook.lnk बैच फ़ाइल से शॉर्टकट लिंक निष्पादित करें और

  • S01 - - Notepad ++ lnk
  • S02 - Chrome.lnk
  • S03 - Skype.lnk
    • S00:। तो फ़ोल्डर में मैं करने के लिए इसी तरह के शॉर्टकट लिंक है

      मैंने एक बैच फ़ाइल बनाई है जो नामकरण प्रारूप से मेल खाने वाले सभी लिंक के माध्यम से लूप करेगा और उन्हें लॉन्च करेगी। कि बैच फ़ाइल की सामग्री को वर्तमान में है:

      @FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO "%%f" 
      

      यह लिंक मैं ठीक कोशिश के सबसे का शुभारंभ करेंगे, लेकिन कुछ का शुभारंभ और प्रक्रिया, बाहर निकलने के लिए के लिए इस प्रकार खोलने से आगे लिपियों को रोकने इंतजार करेंगे। क्या बैच फ़ाइल के भीतर प्रक्रियाओं के बाहर निकलने के इंतजार किए बिना शॉर्टकट निष्पादित करने का कोई तरीका है? या यह एक खोया कारण है और मुझे इसके बजाय पावरहेल समाधान की तलाश करनी चाहिए?

      चीजें मैं अब तक की कोशिश की है:

      • @FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO START /B /I "%%f" 
        

        करने के लिए सामग्री को बदलने से यह एक पृष्ठभूमि प्रक्रिया में कमांड प्रॉम्प्ट की शुरूआत, लेकिन वास्तव में लिंक का लक्ष्य की शुरूआत कभी नहीं।

      • सामग्री बदलने

        @FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO %comspec% /k "%%f" 
        

        को यह पहली कड़ी है, लेकिन इंतजार की शुरूआत।

    उत्तर

    7

    dcp's answer/B ध्वज के बिना इसे सही करके सही दिशा में इंगित किया, लेकिन यह समाधान नहीं था। जाहिर है START पहली उद्धृत स्ट्रिंग लेगा, चाहे इसे पारित पैरामीटर के क्रम के बावजूद, नई विंडो के शीर्षक के रूप में यह निष्पादन योग्य/कमांड मानने के बजाय। तो जब START प्रोजेक्ट लॉन्च किए गए तो उनके पास विंडो के शीर्षक के रूप में शॉर्टकट लिंक थे, और प्रारंभिक निर्देशिका मुख्य बैच फ़ाइल की कार्य निर्देशिका थी। तो मैं निम्नलिखित करने के लिए बैच फ़ाइल के लिए अपनी फ़ाइल अद्यतन और यह काम करता है: `बारे में स्टार्ट foo.bat` नोट करने के लिए

    @FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO START /B /I "TITLE" "%%f" 
    
    7

    पहला तरीका का प्रयास करें, लेकिन START आदेश के बंद /B ले। इस तरह, प्रक्रिया एक नई विंडो में लॉन्च होगी, इसलिए इसे प्रतीक्षा करने का कारण नहीं बनना चाहिए।

    /बी के साथ, यह उसी विंडो में प्रक्रिया को लॉन्च करने जा रहा है। तो अगर वह प्रक्रिया किसी कारण से अवरुद्ध हो जाती है, तो जब तक यह खत्म नहीं हो जाता तब तक आप नियंत्रण वापस नहीं पाएंगे। उदाहरण के लिए, निम्न बैच फ़ाइल, foo.bat पर विचार (आप इस के लिए नींद आदेश की जरूरत है, मैं cygwin तो यह है कि के साथ आता है):

    echo hi 
    sleep 5 
    

    एक कमांड प्रॉम्प्ट से, अगर आप टाइप

    START /B foo.bat 
    

    आप देखेंगे कि नींद समाप्त होने तक नियंत्रण कमांड प्रॉम्प्ट पर वापस नहीं आएगा। हालांकि, अगर हम ऐसा करते हैं:

    START foo.bat 
    

    तो नियंत्रित कर तुरंत वापस आता है (क्योंकि foo.bat एक नई विंडो में शुरू होता है) है, जो है तुम क्या चाहते।

    +0

    एक बात करता है, तो एक और स्क्रिप्ट (कहते हैं कि' bar.bat') यह कहता है यह रहेगा "है सक्रिय "जब तक 'foo.bat' निष्पादित नहीं होता है। इसलिए यदि आपका 'foo.bat' एक लूपिंग स्क्रिप्ट है जो संसाधनों को लॉक करता है तो' bar.bat' "उपयोग में" होगा और संसाधनों को लॉक कर देगा (भले ही 'bar.bat' बंद हो) जब तक 'foo.bat' बंद न हो जाए । – Zero

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