В настоящее время я сталкиваюсь с проблемой, когда процесс cmd.exe остается активным, несмотря на остановку определенной службы. Это, в свою очередь, вызывает проблемы для автоматизированного сценария, который выполняет действия в папке, не позволяя переименовать/переместить/etc.Убить конкретный файл cmd.exe из файла BAT, содержащего строку
Поскольку мой автоматический сценарий работает из файла BAT, я считаю, что могу убить его с помощью TASKKILL. Используя «Process Explorer», я искал имя папки, и он смог найти «cmd.exe», который ее использовал. У меня возникли проблемы с поиском способа автоматизации этого, но без какого-либо типа «Содержит строку». Мой пример псевдо ...
taskkill /IM cmd.exe /FI "NAME contains TC38247178584278321320778"
php\php.exe migration.php TC38247178584278321320778
Вот альтернативный вопрос, который может даже привести к лучшему решению: [Как узнать, какой процесс открыт для файла?] (Https://blogs.msdn.microsoft.com/oldnewthing/20120217-00 /? p = 8283) И ответ: Используйте [Restart Manager] (https://msdn.microsoft.com/en-us/library/windows/desktop/cc948910.aspx). – IInspectable
Это выглядит очень аккуратно, хотя кажется слишком большим, учитывая, что в настоящее время я использую файл BAT и PHP –
Если вы можете переключиться на использование [PowerShell] (https://msdn.microsoft.com/en-us/powershell/mt173057 .aspx) вместо пакетных файлов, это будет жизнеспособным вариантом. Даже если с большим количеством вызовов P/Invoke. – IInspectable