배치 파일에 간단한 명령 목록을 작성하는 데 문제가 있습니다.

배치 파일에 간단한 명령 목록을 작성하는 데 문제가 있습니다.

한 배치에서 몇 가지 간단한 배치 명령을 실행하려고 합니다.
해당 문제에 대해 각 명령은 다음과 같은 일괄 명령입니다.

 rails generate scaffold illness name:string
 rails generate scaffold ingredient name:string origin_id:integer

이제 30개의 명령을 모두 실행하는 대신 내 배치 파일은 첫 번째 명령만 실행하고 프롬프트 줄로 돌아갑니다. 그래서 수동으로 실행해야 합니다.

답변1

call배치파일 앞에 단어를 넣어야 하는데 ...

@에코 꺼짐
콜 레일이 발판 질병을 생성합니다. 이름:문자열
Ralis 호출로 스캐폴드 구성 요소 이름 생성:문자열 Origin_id:정수

이는 "rails"가 실제로 Rails.bat라고 가정합니다.

답변2

jftuga의 이전 답변은 정확하지만 더 완전한 답변은 다음과 같습니다.

@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer

당신은부르다각 호출 후에 스크립트가 계속되도록 하려면 새 프로세스를 트리거하는 외부 명령인 배치 파일의 각 줄 앞에. 따라서 DIR 및 COPY와 같은 내부 명령에는 호출이 필요하지 않습니다. 그러나 새로운 명령 프롬프트나 다른 배치 파일을 실행하면 제어권이 해당 프로그램에 완전히 넘겨집니다.부르다줄 맨 앞에 있어요. 실제로 새 명령 프롬프트는 일단 배치 파일에 제어권을 다시 넘겨줍니다.출구그것.

일부 프로그램은 실행되는 동안 일시 중지되지만 완료되면 배치 파일의 다음 줄로 돌아갑니다. 다음 배치 파일에서 스크립트는 메모장을 호출할 때마다 동일하게 일시 중지되고 메모장이 종료된 후(두 번 모두) 시작됩니다. 따라서 그들은 사실상 동일합니다.

notepad.exe
call notepad.exe
echo    It came back.

그러나 다른 배치 파일을 호출할 때 앞에 호출이 없으면 완전한 제어가 새 프로세스로 전달됩니다. 따라서 다음 코드에서 bat 파일의 첫 번째 호출은 완료되면 반환되지만 두 번째 호출은 반환되지 않으므로 마지막 에코 라인은 실행되지 않습니다. call firstBatch.bat SecondBatch.bat echo 이 줄은 절대 볼 수 없습니다

Rails 명령이 어떻게 작동하는지 잘 모르겠지만 일괄 세션과 비슷한 것 같습니다. 아마도 배치 파일이었을 것입니다. cmd에 대한 처음 두 호출은 해당 인스턴스에 종료를 입력하여 이전 셸로 돌아갈 때까지 반환되지 않습니다. 그만큼부르다관련이 없습니다. 그러나 세 번째는 명령을 실행하고 자동으로 반환하도록 지시하는 /c 스위치를 사용합니다. 명령을 보낸 후에도 새 cmd 세션을 활성 상태로 유지하려면 /K 스위치를 사용합니다. 이에 대한 추가 도움말은 다음을 참조하세요.명령 /?

cmd
call cmd 
cmd /c dir
echo   You will see this after typing Exit twice to leave two new instances of cmd. The third instance returned automatically.

관련 정보