เริ่มโปรแกรมผ่านทางบรรทัดคำสั่ง แต่ถ้ายังไม่ได้รัน


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 PowerShell เป็นสิ่งที่ดี
Kolob Canyon

คำตอบ:


20

นี่คือตัวอย่างการใช้tasklistเพื่อตรวจสอบชื่อที่ระบุ
มิฉะนั้นจะเริ่มโปรแกรม ฉันแน่ใจว่าคุณสามารถปรับให้เข้ากับความต้องการของคุณ

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

ตรวจสอบให้แน่ใจว่าทั้งหมดนี้อยู่ในบรรทัดเดียวไซต์นี้จัดรูปแบบเพื่อแยกเป็น||- อย่าทำลาย
CAD bloke

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 จาก CMD ได้โดยเรียก " powershell.exe"

สคริปต์นี้ทำสิ่งต่อไปนี้:

  1. ตรวจสอบรายการกระบวนการสำหรับกระบวนการเฉพาะและหากกระบวนการไม่พบในรายการ ...
  2. มันจะค้นหาไฟล์ปฏิบัติการในตำแหน่งที่ระบุ (เช่นไฟล์โปรแกรม) และเรียกใช้

ในตัวอย่างนี้ฉันเริ่ม Skype for Business (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.