BAT फाइल: नई cmd विंडो खोलें और वहां एक कमांड निष्पादित करें


163

मैं BAT फाइल में एक नई कमांड विंडो खोलने की कोशिश कर रहा हूं:

start %windir%\system32\cmd.exe

इसके खुलने के बाद, मैं नई विंडो में BAT कमांड निष्पादित करना चाहता हूं:

echo "test in new window"

मैं यह कैसे कर सकता हूँ?

जवाबों:


263

आप पहले से ही अपना उत्तर पा सकते हैं क्योंकि यह कुछ समय पहले आपने पूछा था। लेकिन मैंने कुछ ऐसा ही करने की कोशिश की जब रोर को कोड करना। मैं एक नए cmd विंडो में "रेल सर्वर" चलाना चाहता था, इसलिए मुझे एक नया cmd खोलने की आवश्यकता नहीं है और फिर से अपना रास्ता खोजना चाहिए।

मुझे पता चला कि इस तरह के स्विच का उपयोग करना था:

start cmd /k echo Hello, World!

इससे पहले कि "cmd" एक नई विंडो में एप्लिकेशन को खोलेगा और "/ K" "इको हैलो, वर्ल्ड!" पर अमल करेगा। नए cmd के बाद है।

आप कुछ समान के लिए / C स्विच का भी उपयोग कर सकते हैं।

start cmd /C pause

यह तब "पॉज़" को अंजाम देगा लेकिन जब कमांड हो जाए तो विंडो बंद कर दें। इस मामले में आपके द्वारा एक बटन दबाने के बाद। मुझे यह "रेल सर्वर" के लिए उपयोगी लगा, फिर जब मैंने अपने देव सर्वर को बंद कर दिया तो मुझे इसके बाद विंडो बंद नहीं करनी है।


2
यदि आप एक रेल सर्वर चलाने के लिए इसका उपयोग कर रहे हैं, तो आपको वास्तव में टाइप करने की आवश्यकता नहीं है cmd। आप सिर्फ टाइप कर सकते हैं start rails s
17

86

अपनी बैच फ़ाइल में निम्नलिखित का उपयोग करें:

start cmd.exe /k "more-batch-commands-here"

या

start cmd.exe /c "more-batch-commands-here"

/ c स्ट्रिंग द्वारा निर्दिष्ट कमांड को बाहर करता है और फिर समाप्त करता है
/ k स्ट्रिंग द्वारा निर्दिष्ट कमांड को बाहर करता है लेकिन रहता है

cmd /?अधिक विवरण के लिए cmd.exe प्रलेखन का उपयोग करें।

कमांड स्ट्रिंग का उचित स्वरूपण तर्कों में रिक्त स्थान के साथ थोड़ा अधिक जटिल हो जाता है। नीचे दिए गए उदाहरण देखें। कुछ उदाहरणों में नेस्टेड दोहरे उद्धरण चिह्नों के उपयोग पर ध्यान दें।

उदाहरण:

प्रोग्राम चलाएं और फ़ाइल नाम पैरामीटर पास करें:
CMD /c write.exe c:\docs\sample.txt

प्रोग्राम चलाएं और एक लंबा फ़ाइल नाम दें:
CMD /c write.exe "c:\sample documents\sample.txt"

कार्यक्रम पथ में स्थान:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

कार्यक्रम पथ + मापदंडों में रिक्त स्थान:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

डेमो 1 और डेमो 2 लॉन्च करें:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

स्रोत: http://ss64.com/nt/cmd.html


13

यह बहुत आसान नहीं है।

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

start cmd.exe stuff.bat %this_dir%

यदि आपके पास संचारित करने के लिए राज्य की एक बड़ी राशि है, तो आप रनटाइम पर एक बैच फ़ाइल बनाने पर विचार कर सकते हैं:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo

del /q /f "%tmp%"

echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"

start cmd.exe "%tmp%"

del /q /f "%tmp%"

जाहिर है कि यह एक तुच्छ उदाहरण है।


11

उपरोक्त उत्तरों से मुझे मदद मिली। लेकिन अभी भी कुछ पता लगाना आवश्यक है। यहां एक उदाहरण स्क्रिप्ट है जिसका उपयोग मैं वेब विकास के लिए 3 प्रक्रियाएं शुरू करने के लिए करता हूं। इसके परिणामस्वरूप 3 खिड़कियां खुली रहती हैं, क्योंकि उन्हें लगातार चलाने की आवश्यकता होती है।

मानगो को विश्व स्तर पर मेरे पथ से जोड़ा गया है, इसलिए मुझे अन्य दो कार्यक्रमों के लिए सीडी की आवश्यकता नहीं है। बेशक आपकी फ़ाइलों का पथ अलग-अलग होगा, लेकिन उम्मीद है कि इससे मदद मिलेगी।

:: Start MongoDB
start cmd.exe /k "mongod"

:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"

:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"

7

स्टैक ओवरफ्लो में यहां सभी का धन्यवाद; यह समाधान उपरोक्त प्रश्न को हल करता है लेकिन इन कार्यों को स्वचालित रूप से चलाने के लिए बढ़ाया जाता है:

  1. मैं अपना रेल सर्वर चलाना चाहता हूं
  2. एक रेक कार्य चलाएँ : मेरे विलंबित_जॉब मणि के लिए भी कार्यकर्ता
  3. और मेरा पृष्ठ दिखाने के लिए डिफ़ॉल्ट इंटरनेट ब्राउज़र खोलें
  4. अंत में, करने के लिए छोड़ एक cmd खिड़की मेरी सत्र के दौरान किसी भी अतिरिक्त आदेशों के लिए खुला।

मुझे लगता है कि मेरे प्रोजेक्ट को "एंटीक्योरम" कहा जाता है

अपनी % USERPROFILE% निर्देशिका में एक "init.bat" फ़ाइल बनाएँ (एक cmd विंडो खोलें और कर्सर के बाईं ओर के पथ पर एक नज़र डालें, यह जानने के लिए कि% USERPROFILE% क्या है)

@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
    start cmd /k %USERPROFILE%\init.bat worker
    start cmd /k %USERPROFILE%\init.bat server
    TIMEOUT 30
    start "" "http://localhost:3000/"
    GOTO end
:server
    rails s
    GOTO end
:worker
    rake jobs:work
:end

एक नई कमांड लाइन विंडो प्रकार में: C:> init एंटीक्योरम

कोड दो और cmd विंडो और एक ब्राउज़र खोलता है। TIMEOUT ब्राउज़र में त्रुटियों से बचा जाता है।

The : स्टार्ट सेक्शन काम करता है। आप params टाइप करके अलग से कार्य 1,2 या 4 चला सकते हैं: सर्वर , कार्यकर्ता , या कोई भी "antiquorum" परियोजना की जड़ में खोले गए cmd को छोड़ने के लिए नहीं ।

का आनंद लें।


2

अगर मैं आपको सही तरीके से समझ रहा हूं तो आपकी बैट फाइल कमांड प्रॉम्प्ट खोलेगी और आपके संदेश को स्क्रीन पर प्रिंट करेगी।

cmd.exe hello world

उम्मीद है की यह मदद करेगा।


2

फ़ाइल नाम में रिक्त स्थान के साथ एक नई cmd विंडो में एक अजगर फ़ाइल चलाने के लिए:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"

0

दो कमांड के बीच जोड़ने से दोनों कमांड निष्पादित होती है/k in order

उदाहरण:

cmd /k echo "hello"

यह कमांड पहले खुलेगी command promptफिर echo "hello"कमांड निष्पादित करें

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