CMD / C없이 예약 된 작업 및 환경 변수


1

Windows 2003 작업 스케줄러 내에서 작업을 실행해야하지만 명령이 환경 변수에 액세스해야합니다.

vlc.exe http://62.196.56.141:8080 --sout=#std{access=file,mux=raw,dst="C:\temp\streaming\%Date:~6,4%-%Date:~3,2%-%Date:~0,2%-RSMorning.mp3"}

위의 명령은 배치 파일 또는 명령 프롬프트에서 실행할 때 작동하지만 작업 스케줄러에서 실행할 때 변수를 올바르게 확장하지 않습니다.

누군가 CMD / C 접두사를 사용 하여이 작업을 수행 할 수 있다고 주장하면서 명령 프롬프트 내에서 명령을 시작할 수 있지만 잠시 후 작업을 강제로 종료해야하므로 호출 된 위치 대신 cmd.exe가 종료됩니다 명령 (이 경우 vlc.exe).

올바른 환경 변수를 상속하면서 배치 파일이나 명령 프롬프트를 사용하지 않고 명령을 실행하는 방법에 대한 힌트가 있습니까?


당신은 당신이 실행되지 않겠 이 문제에 ?
nixda

답변:


0

이 시도

cmd /c start "" vlc.exe http://62.196.56.141:8080 --sout=#std{access=file,mux=raw,dst="C:\temp\streaming\%Date:~6,4%-%Date:~3,2%-%Date:~0,2%-RSMorning.mp3"}

당신은 같은 것으로 VLC를 죽일 수 있습니다

taskkill /fi "imagename eq vlc.exe"

편집 -이제 나는 당신의 딜레마를 완전히 이해했습니다.

환경 변수에 액세스 할 수있는 간단한 솔루션이 없으며 시간이 경과 한 후 작업 스케줄러가 vlc를 죽일 수 있다고 확신합니다. 프로그램은 환경 변수 확장에 대해 아무것도 모르므 vlc.exe로 호출 전에 발생해야합니다 . 그게 바로 일입니다 cmd.exe. 불행하게도, 윈도우 사실 자식 프로세스가없는, 그래서 당신이 시작하는 경우 vlc.exe를 통해 cmd.exe당신은 스케줄러가 죽이는 작업을 할 때, 다음 cmd.exevlc.exe과정이 남아있다.

vlc.exePID를 기억하면서 시작하는 스크립트를 작성해야한다고 생각합니다 . 그러면 스크립트는 지정된 시간 동안 기다린 다음 vlc를 종료합니다. 작업 스케줄러가 스크립트를 시작할 수 있습니다.

해당 Windows 버전에서 사용 가능한 도구 (명령)에 따라 Windows 2003의 배치 스크립트를 사용하여 원하는 작업을 수행 할 수 있다고 생각합니다.

TIMEOUT을 사용하여 지연을 도입 할 수 있습니다. 예를 들어 1 분 정도 기다리려면

timeout 60 /nobreak >nul

WMIC를 사용하여 프로세스를 시작하고 PID를 반환 할 수 있습니다. Windows CMD Shell»프로세스 시작 및 PID 얻기를 참조하십시오 . 까다로운 부분은 인용 된 인수를 전달할 것이라고 생각하지만 할 수는 있습니다. 전체 스레드를 읽으십시오.


내가 쓴 것처럼 CMD / C 구문을 사용하면 주어진 시간이 지나면 작업을 올바르게 종료 할 수 없습니다.
Riccardo

@Riccardo-CMD 프로세스는 이미 오래 걸렸습니다. START가 vlc를 시작하자마자 닫힙니다. VLC를 죽이지 않으려면 무엇을해야합니까? 자체 프로세스가됩니다.
dbenham

작업 스케줄러는 주어진 기간 후에 예약 된 작업을 선택적으로 종료 할 수 있습니다. 이제 예약 된 작업이 cmd.exe (vlc.exe를 매개 변수로 사용)이므로 지속 시간이 종료되면 vlc.exe를 종료 할 수 없습니다.
Riccardo

여러 vlc.exe 인스턴스가 동시에 실행됩니다! 적절한 프로세스를 올바르게 종료하려면 적절한 PID가 필요합니다 ....
Riccardo

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