program tip

다른 bat 파일의 백그라운드에서 bat 파일을 어떻게 실행합니까?

radiobox 2020. 9. 18. 08:00
반응형

다른 bat 파일의 백그라운드에서 bat 파일을 어떻게 실행합니까?


필요한 모든 프로그램을 시작하는 아침에 실행하는 "설치"스크립트가 있습니다. 이제 이들 중 일부는 추가 환경 설정이 필요하므로 작은 BAT 스크립트로 래핑해야합니다.

백그라운드에서 Windows XP에서 이러한 스크립트를 어떻게 실행합니까?

CALL env-script.bat 즉, 설정 스크립트는 환경 스크립트의 명령이 종료 된 후에 만 ​​계속 될 수 있습니다.

START/B env-script.bat 동일한 명령 프롬프트에서 CMD.exe의 다른 인스턴스를 실행하여 정말 지저분한 상태로 둡니다 (중첩 된 CMD.exe의 출력을보고 잠시 동안 키보드가 작동하지 않고 스크립트가 실행되지 않음).

START/B CMD env-script.bat동일한 결과를 산출합니다. CMD의 플래그가 내 청구서와 일치하지 않는 것 같습니다.


실제로 다음은 저에게 잘 작동하며 새 창을 만듭니다.

test.cmd :

@echo off
call "cmd /c start test2.cmd"
call "cmd /c start test3.cmd"
echo Foo
pause

test2.cmd

@echo off
echo Test 2
pause
exit

test3.cmd

@echo off
echo Test 3
pause
exit

에 매개 변수를 사용하여 그 결합 start과 같은, /min당신의 앞에 산란에 새 창을 원하지 않는 경우 모세는 지적했다.


2 살이지만 완전성을 위해 ...

표준 인라인 접근 방식 : (즉 &, Linux에서 사용할 때 얻을 수있는 동작 )

START /B CMD /C CALL "foo.bat" [args [...]]

참고 : 1. CALL.bat 파일과 쌍을 이룹니다. 일반적으로 이동하는 위치이기 때문입니다. (즉, 이는 CMD /C CALL "foo.bat"양식을 비동기로 만들기 위한 확장 일뿐 입니다. 일반적으로 종료 코드를 올바르게 가져 오는 데 필요하지만 문제가되지 않습니다. 여기.); 2. .bat 파일 주위의 큰 따옴표는 이름에 공백이 포함 된 경우에만 필요합니다. (이름은 그 가능성이 더 많은 경로 일 수 있습니다.)

출력을 원하지 않는 경우 :

START /B CMD /C CALL "foo.bat" [args [...]] >NUL 2>&1

배트가 독립 콘솔에서 실행되도록하려면 : (즉, 다른 창)

START CMD /C CALL "foo.bat" [args [...]]

나중에 다른 창이 계속 표시되도록하려면 :

START CMD /K CALL "foo.bat" [args [...]]

참고 : 열린 창을 일반 콘솔로 특별히 사용하려는 사용자가없는 한 이것은 실제로 잘못된 형식입니다. 출력을보기 위해 창을 계속 유지 PAUSE하려면 bat 파일 끝에를 두는 것이 좋습니다 . 또는 아직 ^& PAUSE명령 줄 뒤에 추가 합니다.

START CMD /C CALL "foo.bat" [args [...]] ^& PAUSE

START는 CMD 스크립트에서 백그라운드로 무언가를 실행하는 유일한 방법이므로 계속 사용하는 것이 좋습니다. / B 수정 자 대신 / MIN을 시도하여 새로 생성 된 창이 방해되지 않도록합니다. 또한 / LOW 또는 / BELOWNORMAL을 사용하여 우선 순위를 낮게 설정할 수 있으므로 시스템 응답 성이 향상됩니다.


Other than foreground/background term. Another way to hide running window is via vbscript, if is is still available in your system.

DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("yourcommand.exe", 0, TRUE)

name it as sth.vbs and call it from bat, put in sheduled task, etc. PersonallyI'll disable vbs with no haste at any Windows system I manage :)


Create a new C# Windows application and call this method from main:

public static void RunBatchFile(string filename)
{
    Process process = new Process();

    process.StartInfo.FileName = filename;

    // suppress output (command window still gets created)
    process.StartInfo.Arguments = "> NULL";

    process.Start();
    process.WaitForExit();
}

This works on my Windows XP Home installation, the Unix way:

call notepad.exe & 

Actually is quite easy with this option at the end:

c:\start BATCH.bat -WindowStyle Hidden

참고URL : https://stackoverflow.com/questions/649634/how-do-i-run-a-bat-file-in-the-background-from-another-bat-file

반응형