कमांड-लाइन के माध्यम से प्रोग्राम शुरू करें, लेकिन केवल अगर पहले से ही नहीं चल रहा है


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
अरे। शक्तियां अच्छी हैं।
कोलब कैन्यन

जवाबों:


20

यहां दिए गए नाम के लिए सभी चल रहे एप्लिकेशन की जांच करने के लिए टास्कलिस्ट का उपयोग करके एक उदाहरण दिया गया है।
अन्यथा यह कार्यक्रम शुरू करता है। मुझे यकीन है कि आप इसे अपनी आवश्यकताओं के अनुसार ढाल सकते हैं

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

सुनिश्चित करें कि यह सब एक लाइन पर है, यह साइट इसे प्रारूपित करती है ताकि यह टूट जाए ||- इसे न तोड़े
सीएडी

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

यहाँ एक PowerShell संस्करण (CMD के बजाय) है।

(आप " powershell.exe" कॉल करके CMD से पावरशेल चला सकते हैं ।

यह स्क्रिप्ट निम्न कार्य करती है:

  1. किसी विशिष्ट प्रक्रिया के लिए प्रक्रिया सूची की जाँच करता है, और यदि प्रक्रिया सूची में नहीं मिली है ...
  2. यह एक विशिष्ट स्थान (जैसे प्रोग्राम फ़ाइलों) में निष्पादन योग्य के लिए खोज करेगा , और इसे चलाएगा।

इस उदाहरण में, मैं Skype for Business (AKA "lync") शुरू कर रहा हूं।

यहाँ एक लाइनर है:

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

(आपको वास्तव में निष्पादन योग्य की खोज करने की ज़रूरत नहीं है, आप इसके बजाय इसे सीधे चला सकते हैं - हालांकि निष्पादन योग्य एमएस ऑफिस अपडेट के लिए खोज करना जो कभी-कभी इंस्टॉल निर्देशिका को बदल सकते हैं)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.