Я выяснил, как проверить, работает ли определенный экземпляр программного обеспечения с помощью Tasklist.
@echo off Title - Средство поиска клиентских приложений FTView
ТАСКЛИСТ /FI "WINDOWTITLE EQ Grain *"
Я получаю ответ, который выглядит примерно так.
Имя изображения PID Имя сеанса Session # Mem Usage ======================================= ======== ======== =========== ============ DisplayClient.exe 3768 Консоль 4 62 476 К
Есть ли способ использовать эту информацию для запуска приложения, если оно не найдено?
Я намерен создать запланированное задание, которое будет запускаться каждые 15-30 минут, чтобы запустить этот пакетный файл, который будет искать этот конкретный экземпляр программного обеспечения и запускать программное обеспечение, если оно еще не запущено. Я не могу использовать имя образа задачи, потому что на этом компьютере запущено несколько экземпляров одного и того же программного обеспечения, поэтому мне нужно искать конкретный экземпляр.
С помощью Дамиана Л. я добился определенного прогресса в этом, используя Powershell вместо командной строки. В строке № 17 все еще есть одна загвоздка, второй сценарий запускает запрошенное приложение, но неправильно устанавливает переменную $ LoggingResult. Он просто выводит последний известный $ LoggingResult.
#Script Looks for FTView Logging Application
#If Found - Logs that the application is Running to the Log Text File
#If Not Found - Launches the production logging client and Logs appropriate message to the Log Text File
#If Multiple Instances are found - Notifies the operator to close one down.
$Time = Get-Date #variable for the current date string
$Logfile = [string] 'c:\Shared Folder\LoggerLaunchLog.txt' #variable Log File Path
$WindowLookup = [string] 'Grain*' #variable for what window title you are looking for.
$TargetApp = [string]'C:\Users\Public\Documents\RSView Enterprise\SE\Client\GGCLA-WWMill.cli' #Variable for defining the application to launch
#
#
$process = Get-Process | Where-Object -Like MainWindowTitle -Value $windowlookup #Looks for running process with matching window title
#evaluation & action depending on result
If ($process.count -gt 0){
If ($process.count -gt 1) {$LoggingResult = "Multiple Instances of Logging Application Are Running - Please Close 1"}
else {$LoggingResult = "Logging Application is Running"}
}
else {Start-Process $TargetApp{$LoggingResult = "Logging Application not found - Loading Application"}}
Write-Output "$Time $LoggingResult" #Command Line output for Powershell Visual display - optional
Add-content $Logfile -value "$Time $LoggingResult" #Writes the results & actions to the Log Text File
#pause #for testing to visually see output
Последнее редактирование - Еще раз спасибо Дамиану Т. за помощь, теперь все работает правильно ...
#Script Looks for FTView Logging Application
#If Found - Logs that the application is Running to the Log Text File
#If Not Found - Launches the production logging client and Logs appropriate message to the Log Text File
#If Multiple Instances are found - Notifies the operator to close one down.
$Time = Get-Date #variable for the current date string
$Logfile = [string] 'c:\Shared Folder\LoggerLaunchLog.txt' #variable Log File Path
$WindowLookup = [string] 'Grain*' #variable for what window title you are looking for.
$TargetApp = [string]'C:\Users\Public\Documents\RSView Enterprise\SE\Client\GGCLA-WWMill.cli' #Variable for defining the application to launch
$process = Get-Process | Where-Object -Like MainWindowTitle -Value $windowlookup #Looks for running process with matching window title
#evaluation & action depending on result
If ($process.count -gt 0){
If ($process.count -gt 1) {$LoggingResult = "Multiple Instances of Logging Application Are Running - Please Close 1"
Write-Output "$Time $LoggingResult"
pause}
else {$LoggingResult = "Logging Application is Running"}
}
else {Start-Process $TargetApp
$LoggingResult = "Logging Application not found - Loading Application"}
Write-Output "$Time $LoggingResult" #Command Line output for Powershell Visual display - optional
Add-content $Logfile -value "$Time $LoggingResult" #Writes the results & actions to the Log Text File
#pause #for testing to visually see output