명령 줄을 통해 프로그램을 시작하십시오 (아직 실행되지 않은 경우에만).


13

아래 배치 파일을 생각해 냈으며 훌륭하게 작동합니다. 그러나 프로그램이 이미 실행중인 경우 프로그램을 건너 뛰고 다음 프로그램을 시작하도록 코드를 작성하는 방법이 있는지 알고 싶습니다. 이것이 의미가 있기를 바랍니다. 모든 조언을 주시면 감사하겠습니다.

@echo off    
pushd    
start "" cmd /c cscript "C:\Users\User\Desktop\Work.vbs"    
start "C:\Program Files\Microsoft Office\Office15" Outlook.exe    
start "C:\Program Files\Microsoft Office\Office15" Lync.exe    
start "C:\Program Files (x86)\Google\Chrome\Application" chrome.exe    
runas /savecred /user:"DOMAIN\User_Adm" "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe"    
runas /savecred /user:"DOMAIN\User_Adm" "mmc.exe \"My_Tools.msc\"

1
psst. 파워 쉘이 좋습니다.
Kolob Canyon

답변:


20

다음은 tasklist 를 사용하여 주어진 이름에 대해 실행중인 모든 응용 프로그램을 확인 하는 예 입니다.
그렇지 않으면 프로그램이 시작됩니다. 나는 당신이 당신의 요구에 적응할 수 있다고 확신합니다

tasklist /nh /fi "imagename eq notepad.exe" | find /i "notepad.exe" > nul ||
(start notepad.exe)

이 사이트가 모두 한 줄로되어 있는지 확인하십시오.이 사이트는 형식이 변경되어 끊어 ||지지 마십시오.
CAD

3

작업 목록을 스크립트에 구현하고 매력처럼 작동했습니다.
이것은 내가 가진 것과 같은 질문을 가진 다른 사람들을위한 것입니다.

@echo off
pushd
tasklist /nh /fi "imagename eq iexplore.exe" | find /i "iexplore.exe" > nul ||(start Work.vbs)
tasklist /nh /fi "imagename eq outlook.exe" | find /i "outlook.exe" > nul ||(start outlook.exe)
tasklist /nh /fi "imagename eq lync.exe" | find /i "lync.exe" > nul ||(start lync.exe)
tasklist /nh /fi "imagename eq chrome.exe" | find /i "chrome.exe" > nul ||(start chrome.exe)
tasklist /nh /fi "imagename eq VpxClient.exe" | find /i "VpxClient.exe" > nul || runas /savecred /user:"DOMAIN\User_Adm" "C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe"
tasklist /nh /fi "imagename eq mmc.exe" | find /i "mmc.exe" > nul || runas /savecred /user:"DOMAIN\User_Adm" "mmc.exe \"My_Tools.msc\"

3
@echo off      
tasklist /FI "IMAGENAME eq outlook.exe" | find /i "outlook.exe"      

IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 

:LOOP1 
  start notepad.exe
goto EXIT     

:LOOP1 
  start outlook.exe 
goto EXIT 

:EXIT

1

CMD 대신 PowerShell 버전이 있습니다.

" powershell.exe" 를 호출하여 CMD에서 powershell을 실행할 수 있습니다 .

이 스크립트는 다음을 수행합니다.

  1. 특정 프로세스에 대한 프로세스 목록을 확인하고 프로세스가 목록에없는 경우 ...
  2. 그것은 것입니다 검색 (프로그램 파일과 같은) 특정 위치에 실행 파일 및 실행합니다.

이 예에서는 비즈니스 용 Skype (AKA "lync")를 시작합니다.

1 개의 라이너가 있습니다 :

if (!((Get-Process | select ProcessName).ProcessName | where {$_ -like "*lync*"})){&(where.exe /R "C:\Program Files (x86)\Microsoft Office" "lync.exe")}

다음은 주석 처리 된 버전입니다.

# If there isn't a running process that contains "lync"...
if (!((Get-Process | select ProcessName).ProcessName | where {$_ -like "*lync*"}))
{
    # Find the executable somewhere in program files (x86), and run it.
    &(where.exe /R "C:\Program Files (x86)\Microsoft Office" "lync.exe")
}

(실제로 실행 파일을 검색 할 필요는 없지만 대신 직접 실행할 수 있습니다. 그러나 실행 파일을 검색하면 설치 디렉토리를 변경하는 MS Office 업데이트가 가능합니다)

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