Windows 'cmd' पर 'start' कमांड के साथ कमांड लाइन के तर्कों के साथ प्रोग्राम कैसे शुरू करें?


33

मुझे startविंडोज 7 कमांड लाइन पर कमांड के साथ पृष्ठभूमि में एक प्रोग्राम (वर्चुअल मशीन) शुरू करने की आवश्यकता है । आम तौर पर आप ऐसा करेंगे:

start /b cmd yourprogram

लेकिन मुझे कुछ तर्कों को पारित करने की आवश्यकता है और जब मुझे ऐसा लगता है (बिना /bडिबग सूचना को देखने के लिए झंडा)

start C:\Users\USER>start "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

मुझे यह त्रुटि संदेश मिला:

Windows '-startvm' नहीं ढूँढ सकता। सुनिश्चित करें कि आपने नाम ठीक से टाइप किया है, और फिर पुन: प्रयास करें।

दूसरी ओर जब मैं इसे चालू कमांड लाइन विंडो में बिना startशुरुआत में करता हूं तो वर्चुअल मशीन सामान्य रूप से चलती है - लेकिन अग्रभूमि में।

कोई उपाय?

जवाबों:


36
start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

यदि आप पैरामीटर सूची को इसके साथ पढ़ते हैं start /?:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"     Title to display in window title bar.
    command/program
                If it is an internal cmd command or a batch file then
                the command processor is run with the /K switch to cmd.exe.
                This means that the window will remain after the command
                has been run.

                If it is not an internal cmd command or batch file then
                it is a program and will run as either a windowed application
                or a console application.

    parameters  These are the parameters passed to the command/program.

यह titleउद्धरण ( ") में संलग्न की अपेक्षा करता है । चूंकि आपके प्रोग्राम पथ में उद्धरण शामिल हैं, इसलिए इसे शीर्षक के रूप में व्याख्या की गई। एक स्पष्ट शीर्षक जोड़ना (इस मामले में, खाली "") काम करता है।


/dपथ निर्दिष्ट करने के लिए एक वैकल्पिक विधि स्विच का उपयोग कर रही है। विशेष रूप से:

start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"

यह /dमार्ग के रूप में स्विच के बाद पहला तर्क लेता है , भले ही इसे उद्धृत किया गया हो, और यदि अगले तर्क को उद्धृत नहीं किया जाता है तो यह काम करता है। कमांड / प्रोग्राम के रूप में मान्यता प्राप्त सब कुछ उस कमांड / प्रोग्राम के पैरामीटर के रूप में पास किया जाता है। ध्यान दें कि यह काम नहीं करेगा यदि कमांड / प्रोग्राम में नाम के स्थान हैं, उदाहरण के लिए VBox Headless.exe, क्योंकि उद्धरण की आवश्यकता होगी और शीर्षक के रूप में पहचाना जाएगा।


कुल मिलाकर, पहला (स्पष्ट शीर्षक) विधि शायद बेहतर है। यह Microsoft की ओर से एक बुरा डिज़ाइन विकल्प था, उन्हें वास्तव में "उद्धरणों में उल्लिखित पहला तर्क है" के बजाय शीर्षक के लिए एक स्विच जोड़ना चाहिए था।


इसके लिए बहुत बहुत धन्यवाद :) यद्यपि जैसा कि मुझे पता start /bहै कि पृष्ठभूमि में वर्चुअल मशीन नहीं डालते हैं। मुझे तब कुछ और करना होगा।
पेट्रीक

यदि आप केवल आउटपुट ( stdout) को दबाना चाहते हैं , >nulतो अंत में जोड़ें । >nul 2>nulसामान्य आउटपुट और एरर ( stderr) आउटपुट दोनों को दबाने के लिए अंत में उपयोग करें । हालाँकि, कमांड प्रॉम्प्ट विंडो को खुला रखा जाना चाहिए।
बॉब

1
@Patryk यदि आप PowerShell का उपयोग करने में कोई आपत्ति नहीं करते हैं, तो यह कमांड एक विंडो रहित प्रक्रिया खोलेगी, जो कि स्पॉनिंग (powerhell.exe) प्रक्रिया से जुड़ी नहीं है। इसलिए PowerShell विंडो को बंद किया जा सकता है और VBoxHeadless चालू रहेगा। PowerShell विंडोज 7.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
बॉब

3

वास्तव में स्वीकृत उत्तर अभी भी समाधान नहीं है। Cmd विंडो को बंद करना जहां कमांड को निष्पादित किया गया था, इसमें चल रही वर्चुअल मशीन के साथ vboxheadless प्रक्रिया को मार देगा।

नीचे दिए गए दृष्टिकोण का उपयोग करने से PowerShell एक स्वतंत्र प्रक्रिया चलाएगा।

Cmd में, रन:

cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage list vms

यह कुछ इस तरह लौटेगा:

"Webserver LAP" {8748b594-7e2d-4d8d-8785-999940766754}

अब UUID लें और निम्नलिखित (अभी भी cmd में) चलाएं:

powershell start-process 'C:\program files\oracle\virtualbox\vboxheadless' '-s 8748b594-7e2d-4d8d-8785-999940766754' -WindowStyle Hidden

इस लेख के लेखक को धन्यवाद ।


में अपने खुद के जवाब पर मेरी टिप्पणी मैं पहले से ही "VBox headlessly चल" के लिए एक वैकल्पिक पद्धति प्रदान की है। मेरा जवाब स्वयं "पास होने वाली दलीलें" के सवाल को संबोधित करता है start
बॉब

वाह! cdमेरे घंटे बचाए!
टोडुआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.