답변:
당신이 이미 한 시간 전에 요청했기 때문에 이미 답변을 찾을 수 있습니다. 그러나 ror을 코딩 할 때 비슷한 것을 시도했습니다. 새 cmd 창에서 "rails server"를 실행하고 싶기 때문에 새 cmd를 연 다음 경로를 다시 찾을 필요가 없습니다.
내가 알았던 것은 K 스위치를 다음과 같이 사용하는 것입니다.
start cmd /k echo Hello, World!
"cmd"가 새 창에서 응용 프로그램을 열기 전에 시작하고 "/ K"는 "echo Hello, World!"를 실행합니다. 새 cmd가 시작된 후
/ C 스위치를 비슷한 용도로 사용할 수도 있습니다.
start cmd /C pause
그러면 "일시 정지"가 실행되지만 명령이 완료되면 창을 닫습니다. 이 경우 버튼을 누른 후 나는 이것이 "레일 서버"에 유용하다는 것을 알았다. 그리고 나는 나의 dev 서버를 셧다운 할 때 창을 닫을 필요가 없다.
배치 파일에서 다음을 사용하십시오.
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""
이것은 쉽지 않습니다.
가장 좋은 방법은 스크립트의 일부를 "새 창"에서 실행하여 별도의 .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%"
분명히 이것은 사소한 예입니다.
위의 답변이 도움이되었습니다. 그러나 여전히 알아낼 것이 필요했습니다. 다음은 웹 개발을 위해 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"
Stack Overflow의 모든 덕분에; 이 솔루션은 위의 질문을 해결하지만 다음 작업을 자동으로 실행하도록 확장되었습니다.
내 프로젝트는 "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를 별도로 실행할 수 있습니다 .
즐겨.
cmd
. 을 입력하면start rails s
됩니다.