BAT 파일 : 새 cmd 창을 열고 거기에서 명령을 실행하십시오


163

BAT 파일에서 새 명령 창을 열려고합니다.

start %windir%\system32\cmd.exe

열린 후 새 창에서 BAT 명령을 실행하고 싶습니다.

echo "test in new window"

어떻게해야합니까?

답변:


263

당신이 이미 한 시간 전에 요청했기 때문에 이미 답변을 찾을 수 있습니다. 그러나 ror을 코딩 할 때 비슷한 것을 시도했습니다. 새 cmd 창에서 "rails server"를 실행하고 싶기 때문에 새 cmd를 연 다음 경로를 다시 찾을 필요가 없습니다.

내가 알았던 것은 K 스위치를 다음과 같이 사용하는 것입니다.

start cmd /k echo Hello, World!

"cmd"가 새 창에서 응용 프로그램을 열기 전에 시작하고 "/ K"는 "echo Hello, World!"를 실행합니다. 새 cmd가 시작된 후

/ C 스위치를 비슷한 용도로 사용할 수도 있습니다.

start cmd /C pause

그러면 "일시 정지"가 실행되지만 명령이 완료되면 창을 닫습니다. 이 경우 버튼을 누른 후 나는 이것이 "레일 서버"에 유용하다는 것을 알았다. 그리고 나는 나의 dev 서버를 셧다운 할 때 창을 닫을 필요가 없다.


2
이것을 사용하여 레일즈 서버를 운영한다면 실제로는 입력 할 필요가 없습니다 cmd. 을 입력하면 start rails s됩니다.
fbonetti 2016 년

86

배치 파일에서 다음을 사용하십시오.

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

또는

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

/ c 문자열로 지정된 명령을 수행 한 다음
/ k 를 종료 합니다. 문자열로 지정된 명령을 수행하지만 남아 있습니다.

자세한 내용은 cmd.exe 설명서 cmd /?를 참조하십시오.

명령 문자열의 올바른 형식은 인수에 공백이 있으면 조금 더 복잡해집니다. 아래 예를 참조하십시오. 일부 예에서는 중첩 큰 따옴표를 사용합니다.

예 :

프로그램을 실행하고 파일 이름 매개 변수를 전달하십시오.
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""

demo1 및 demo2를 시작하십시오.
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

출처 : http://ss64.com/nt/cmd.html


13

이것은 쉽지 않습니다.

가장 좋은 방법은 스크립트의 일부를 "새 창"에서 실행하여 별도의 .bat 파일로 만드는 것입니다. 예를 들어 스크립트의 나머지 부분 (변수 등)에서 많은 상태가 필요한 경우 비실용적 일 수 있습니다. 한 가지 옵션은 필요한 값 (예 : dir을 작동하기 위해)을 배치 파일로 전달하는 것입니다.

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 개의 창이 열려 있습니다.

Mongo는 전 세계적으로 경로에 추가되어 있으므로 다른 두 프로그램 에서처럼 CD를 넣을 필요가 없습니다. 물론 파일 경로는 다양하지만 도움이 될 것입니다.

:: 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

Stack Overflow의 모든 덕분에; 이 솔루션은 위의 질문을 해결하지만 다음 작업을 자동으로 실행하도록 확장되었습니다.

  1. 레일즈 서버 를 운영하고 싶습니다
  2. 레이크 작업을 실행하십시오 : delayed_job gem의 작업자
  3. 기본 인터넷 브라우저를 열어 내 페이지표시합니다
  4. 마지막으로,하기 휴가 cmd를 창 내 세션 동안 여분의 명령을 오픈합니다.

내 프로젝트는 "antiquorum" 이라고 합니다.

% 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 antiquorum

이 코드는 두 개의 cmd 창과 브라우저를 엽니 다. TIMEOUT 은 브라우저의 오류를 피합니다.

: 시작 부분은 작업을 수행합니다. server , worker 또는 none으로 params를 입력하여 "antiquorum" 프로젝트의 루트 에 cmd를 열어 두어 태스크 1, 2 또는 4를 별도로 실행할 수 있습니다 .

즐겨.


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"명령 을 실행합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.