为什么 Visual Studio 无法在 %path% 中找到文件?

为什么 Visual Studio 无法在 %path% 中找到文件?

我创建了一个批处理文件,该文件在 Visual Studio 2015 (社区版更新 3) 中成功构建 C# winforms 项目后运行。在该批处理文件中,我想确保某些其他可执行文件当前未运行。

为此,批处理文件包含类似以下内容的行:

tskill notepad

当我构建时,批处理文件执行,但输出内容为(部分):

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

但是,我可以从 Visual Studio 之外的 cmd 提示符运行批处理文件,并且它可以按预期工作(终止指定的可执行文件且没有报告错误)。

我尝试排除显而易见的东西:使用完整路径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% 变量更长,但其他行为相同(例如,它可以从批处理和命令行中找到 c:\windows\system32 中的 tskill。)

相关内容