Programları komut satırı üzerinden başlatın, ancak henüz çalışmıyorsa


13

Aşağıdaki toplu iş dosyası ile geldim ve harika çalışıyor. Ancak, bir program zaten çalışıyorsa, onu atlayıp bir sonrakini başlatmak için kodlamak için bir yol olup olmadığını bilmek istiyorum. Umarım bu mantıklı gelir. Herhangi bir tavsiye büyük mutluluk duyacağız.

@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
hişt. Powershell iyidir.
Kolob Kanyonu

Yanıtlar:


20

Belirli bir ad için çalışan tüm uygulamaları kontrol etmek için görev listesini kullanan bir örnek .
Aksi takdirde programı başlatır. Eminim ihtiyaçlarınıza göre uyarlayabilirsiniz

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

Bunun tek bir satırda olduğundan emin olun, bu site onu bozar ||- kırmaz
CAD bloke

3

Görev listesini senaryomda uyguladım ve bir cazibe gibi çalışıyor.
İşte aynı soruları olan herkes için.

@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

İşte bir PowerShell sürümü (CMD yerine).

(Powershell'i " powershell.exe" öğesini çağırarak CMD'den çalıştırabilirsiniz .

Bu komut dosyası şunları yapar:

  1. İşlem listesini belirli bir işlem için denetler ve işlem listede bulunmazsa ...
  2. Bu edecektir arama (program dosyaları gibi) belirli bir konumdaki yürütülebilir için, ve çalıştırın.

Bu örnekte Skype Kurumsal'ı (AKA "vaşak") başlatıyorum.

İşte 1 astar:

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

İşte yorumlanmış bir sürüm:

# 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")
}

(Aslında yürütülebilir dosyayı aramak zorunda değilsiniz, bunun yerine doğrudan çalıştırabilirsiniz - ancak yürütülebilir dosyayı aramak bazen yükleme dizinini değiştirebilen MS Office güncellemelerine izin verir)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.