Автор: Fantazmat May 20 2023, 7:59
Доброго времени суток.
Дано: есть 6 окон одного и того же приложениея, все запущены с разными учетками, иногда они отваливаются (решить нельзя), но если учетка теряет соединение то окно не закрываеться, а просто падает в ошибку. Проблема в том что в процессах все 6 окон имеют одно название, меняеться только тайтл после входа в учетку. И так требуеться при вылете окна закрыть только то которое вылетело и запустить заново, Командой
CODE Format
powershell -command "Get-Process -Name exefile | Format-List MainWindowTitle, id | Out-File .\timetotime\pids.txt"
записываю ид процесса и тайтл присвоеный ему, чтоб можно было закрывать только нужное окно. Моя проблема заключаеться в том что powershell при выгрузке в файл создает кучу пустых строк включая и начало файла.
MainWindowTitle : EVE - Zemleroika3
Id : 1100
MainWindowTitle : EVE - r3gent3
Id : 4264
MainWindowTitle : EVE - Zemleroika4
Id : 5644
MainWindowTitle : EVE - Zemleroika2
Id : 8500
MainWindowTitle : EVE - r3gent2
Id : 8584
MainWindowTitle : EVE - Zemleroika
Id : 9188
мне нужен кусок кода который бы мне или переписывал этот файл в другой документ в виде
Zemleroika - 9188
Или чтоб сразуу определял имя пользователя и ид процесса закидывал в переменную.
Буду очень благодарен за помощь, потому что я что то зашел в тупик с этим вопросом.
Автор: Tiger May 20 2023, 12:20
Вдумчиво не писал запрос, просто скопипастил твой пост и исправил ошибки. Попробуй, авось заработает.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
Вы можете использовать следующий код PowerShell для перезаписи содержимого файла `pids.txt` в требуемом формате и сохранения имени пользователя и идентификатора процесса в переменной:
```powershell
$processes = Get-Process -Name exefile | Select-Object MainWindowTitle, Id
$content = ""
foreach ($process in $processes) {
$title = $process.MainWindowTitle.Trim("EVE - ")
$content += "$title - $($process.Id)`n"
}
$content | Out-File -FilePath ".\timetotime\pids_new.txt"
$processes
```
Этот код перебирает каждый процесс, удаляет префикс "EVE - " из заголовка окна и создает строку в формате "ИмяПользователя - ИдентификаторПроцесса". Затем строка сохраняется в переменной `$content`. В конце содержимое переменной `$content` записывается в новый файл `pids_new.txt`.
При необходимости, вы можете изменить путь и имя файла вывода на свои нужды.
Автор: Fantazmat May 20 2023, 20:14
(Tiger @ May 20 2023, 13:20)
![Перейти к цитате](style_images/0day[1]/message_quote_arrow.svg)
Вдумчиво не писал запрос, просто скопипастил твой пост и исправил ошибки. Попробуй, авось заработает.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
Вы можете использовать следующий код PowerShell для перезаписи содержимого файла `pids.txt` в требуемом формате и сохранения имени пользователя и идентификатора процесса в переменной:
```powershell
$processes = Get-Process -Name exefile | Select-Object MainWindowTitle, Id
$content = ""
foreach ($process in $processes) {
$title = $process.MainWindowTitle.Trim("EVE - ")
$content += "$title - $($process.Id)`n"
}
$content | Out-File -FilePath ".\timetotime\pids_new.txt"
$processes
```
Этот код перебирает каждый процесс, удаляет префикс "EVE - " из заголовка окна и создает строку в формате "ИмяПользователя - ИдентификаторПроцесса". Затем строка сохраняется в переменной `$content`. В конце содержимое переменной `$content` записывается в новый файл `pids_new.txt`.
При необходимости, вы можете изменить путь и имя файла вывода на свои нужды.
Я попробовал сделать что то вроде этого
CODE Format
For /F "UseBackQ tokens=1,2,3,4,5 delims=:-( " %%a in ("%pids%") do if "%%a"=="Id" echo %%b>>pids.txt && if "%%a"=="MainWindowTitle" echo %%c>>pids.txt
пробую ваш скрипт, однако почему то , даже при запуске с powershell 7.3 он для выполнение требует обновить powershell, что довольно странно учитывая что это последняя версия, но я разберусь с этим и отпишу
Автор: Fantazmat May 21 2023, 7:02
Решил!!!
Изменил формат записи на -
CODE Format
powershell -command "Get-Process -Name exefile | Format-Table -Property MainWindowTitle, id | Out-String | Out-File -Encoding ASCII .\timetotime\pids.txt"
и строку вычитки на
CODE Format
For /F "UseBackQ tokens=1,2,3,4 delims= " %%a in ("%pids%") do if "%%a"=="EVE" echo %%c %%d>pids_new.txt
Задача закрыта, спасибо за помощь Tiger
Автор: Tiger May 22 2023, 16:36
(Fantazmat @ May 21 2023, 8:02)
![Перейти к цитате](style_images/0day[1]/message_quote_arrow.svg)
Задача закрыта, спасибо за помощь Tiger
Это не мне, а ChatGPT
Автор: mussy May 25 2023, 16:53
CharGPT теперь будет более эффективной заменой Stack Overflow =)
Автор: Tiger May 25 2023, 22:34
(mussy @ May 25 2023, 17:53)
![Перейти к цитате](style_images/0day[1]/message_quote_arrow.svg)
CharGPT теперь будет более эффективной заменой Stack Overflow =)
Уже и давно. Стаки его запретили уже.
Но эта LLM имеет особенности. Если ты слабо понимаешь что ты хочешь, что тебе реально надо и как ты хочешь это реализовать - это не для тебя. В остальном - это реальный "джарвис".