
У меня есть несколько пользователей, которые используют приложение удаленного рабочего стола (Server 2008), и когда они открывают созданный мной файл .BAT, он открывает две программы... однако мне нужно предотвратить многократное открытие одной и той же программы (в данном случае Outlook)...
Я создал эту строку в своем .BAT-файле...
tasklist /nh /fi "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)
Все работает отлично... за исключением того, что у меня есть несколько пользователей, которые входят в этот «терминальный сервер» и запускают один и тот же файл .BAT... так вот, когда входит «Пользователь 2», он не запускает Outlook, потому что он уже отображается как работающий в диспетчере задач под «ПОЛЬЗОВАТЕЛЕМ 1»...
Мне нужно уметь различать "imagename" and "username"
... ну, "имя пользователя" будет%USERPROFILE%
решение1
Как предотвратить открытие той же программы на терминальном сервере «тем же пользователем» с помощью командной строки?
У меня есть несколько пользователей, которые входят в этот «терминальный сервер» и запускают один и тот же .BAT-файл... так вот, когда входит «Пользователь 2», он не запускает Outlook, потому что он уже отображается как работающий в диспетчере задач под «ПОЛЬЗОВАТЕЛЬ 1».
Попробуйте применить следующую логику, поскольку она будет использовать %Username%
переменную окружения только для получения текущей TASKLIST
записи для имени пользователя профиля учетной записи пользователя, который запускает эту команду. . .
КОМАНДЫ СПИСКА ЗАДАЧ ДЛЯ ПОЛУЧЕНИЯ ПРОЦЕССА ТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЯ, ЗАПУСТИВШЕГО ЕГО
TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe"
ИСПОЛЬЗУЯ ВАШ ПРИМЕР ЛОГИКИ
TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)