Я создал командный файл, который запускается при успешной сборке проекта winforms C # в Visual Studio 2015 (выпуск 3 для сообщества). В этом пакетном файле я хочу убедиться, что некоторые другие исполняемые файлы в данный момент не запущены.

Для этого пакетный файл содержит строки, похожие на:

tskill notepad

Когда я строю, пакетный файл выполняется, но вывод читает (частично):

'tskill' is not recognized as an internal or external command, 
operable program or batch file.

Однако я могу запустить командный файл из командной строки cmd вне Visual Studio, и он работает как положено (уничтожает указанные исполняемые файлы без сообщений об ошибках).

Я попытался исключить очевидные вещи: используя полный путь к tskill , убедившись, что tskill действительно существует в c:\windows\system32 и что этот каталог находится на пути.

Я также добавил ECHO %path% в пакетный файл, чтобы сравнить путь при вызове из VS, а также из командной строки - путь одинаков в обоих случаях.

Я закрыл и перезапустил Visual Studio с правами администратора - те же результаты.

Итак: Почему пакетный файл, вызываемый из Visual Studio, не находит файл c:\windows\system32\tskill.exe?

(Примечание: я знаю, что taskkill существует и является аналогичной утилитой, этот вопрос не об альтернативах tskill, а о том, почему VS не может его найти.)

Изменить: чтобы уточнить вопросы от комментатора: сообщается об одной и той же ошибке, использую ли я полный путь к файлу или только имя исполняемого файла. Моя текущая системная переменная окружения% path% имеет длину 1564 символа (максимальное значение по умолчанию для windows 7 - 2047). Пакетный файл работает правильно, когда запускается как пользователь без повышенных прав вне Visual Studio из командной строки.

Редактировать 2: выполнил следующий тест. 1) открыть блокнот, 2) из командной строки с повышенными правами вызвать tskill с полным путем к exe, 3) убедиться, что блокнот больше не работает.

Редактировать 3: я добавил строку, where tskill в мой пакетный файл, чтобы увидеть, вызывал ли он неправильный файл. Из командной строки командный файл выводит: C:\Windows\System32\tskill.exe . Из Visual Studio эта строка выводит: INFO: Could not find files for the given pattern(s) .

Изменить 4: В соответствии с предложением в комментариях я попытался использовать командную строку разработчика для VS2015. Хотя переменная% path% была длиннее, другое поведение было таким же (например, она могла найти tskill в c:\windows\system32 как из пакета, так и из командной строки.)

0