Powershell 术语';nmake';不被承认
我做错了什么,但我不知道是什么。我有一个PowerShell脚本,其中有一个变量如下:Powershell 术语';nmake';不被承认,powershell,visual-studio-2017,nmake,Powershell,Visual Studio 2017,Nmake,我做错了什么,但我不知道是什么。我有一个PowerShell脚本,其中有一个变量如下: $VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" $VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliar
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
& "$($VCVARSALLBAT)" x86_amd64
nmake
现在,在这个脚本中,我想调用这个vcvvarsall.bat
执行以下操作:
& "$($VCVARSALLBAT)" x86_amd64
从我看到的输出来看,它运行了。调用vcvarsall.bat
后,我调用nmake
即,我的脚本如下所示:
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
& "$($VCVARSALLBAT)" x86_amd64
nmake
我收到以下错误消息:
nmake : The term 'nmake' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again.
At ...:214 char:1
+ nmake
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (nmake:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : CommandNotFoundException
如果
nmake
是一个程序,请尝试nmake.exe
nmake.exe
必须在您的路径中才能运行。如果不是,您可以(a)指定可执行文件的完整路径(b)或将可执行文件添加到您的路径。通过从Powershell或CMD提示符调用where.exe nmake
,可以查看可执行文件是否在您的路径中
添加到答案中
下面是.exe的作用
如果您在CMD中找到某些内容,但在Powershell中找不到,我将验证您的路径是否匹配:
如果给定的程序在您的路径中,where.exe
将找到它,即使在Powershell中也是如此
在最初的帖子中,您得到的是标准的“我找不到您的命令”。Powershell的例外情况:
如果确实要测试是否可以从Powershell调用exe,请显式调用它:
'C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86\nmake.exe'
如果这样做有效,并且您想通过程序名调用它,请仔细检查您的路径。如果
nmake
是一个程序,请尝试nmake.exe
nmake.exe
必须在您的路径中才能运行。如果不是,您可以(a)指定可执行文件的完整路径(b)或将可执行文件添加到您的路径。通过从Powershell或CMD提示符调用where.exe nmake
,可以查看可执行文件是否在您的路径中
添加到答案中
下面是.exe的作用
如果您在CMD中找到某些内容,但在Powershell中找不到,我将验证您的路径是否匹配:
如果给定的程序在您的路径中,where.exe
将找到它,即使在Powershell中也是如此
在最初的帖子中,您得到的是标准的“我找不到您的命令”。Powershell的例外情况:
如果确实要测试是否可以从Powershell调用exe,请显式调用它:
'C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86\nmake.exe'
如果这样做有效,并且您想通过程序名调用它,请仔细检查您的路径。我尝试了
nmake.exe
,但仍然收到相同的错误。在Powershell中调用&“$($VCVARSALLBAT)”x86_amd64
(在我的例子中)应该将路径设置为nmake.exe
,但Powershell不会识别它。是否使用where.exe
查看路径中是否有nmake.exe
?如果批处理文件的目的是填充环境变量,那你就不能从PowerShell运行它了。(这是因为PowerShell使用cmd.exe
执行脚本,但当cmd.exe
终止时,变量将被释放。)有关解决此问题的PowerShell函数,请参阅“重复回答”链接。Visual Studio附带了多个此类批处理文件。您不能直接在PowerShell中执行它们,而让环境变量保持不变。我写的函数(问题评论中的链接)就是围绕这个限制工作的。我想你可能误解了。简单地将nmake.exe
目录添加到路径
变量不会有帮助,因为VS批处理脚本设置了一组其他相关的环境变量,这些变量都必须为命令行生成工作而设置。我尝试了nmake.exe
,但仍然得到相同的错误。在Powershell中调用&“$($VCVARSALLBAT)”x86_amd64
(在我的例子中)应该将路径设置为nmake.exe
,但Powershell不会识别它。是否使用where.exe
查看路径中是否有nmake.exe
?如果批处理文件的目的是填充环境变量,那你就不能从PowerShell运行它了。(这是因为PowerShell使用cmd.exe
执行脚本,但当cmd.exe
终止时,变量将被释放。)有关解决此问题的PowerShell函数,请参阅“重复回答”链接。Visual Studio附带了多个此类批处理文件。您不能直接在PowerShell中执行它们,而让环境变量保持不变。我写的函数(问题评论中的链接)就是围绕这个限制工作的。我想你可能误解了。简单地将nmake.exe
目录添加到Path
变量不会有任何帮助,因为VS批处理脚本设置了一组其他相关的环境变量,这些变量都必须为命令行生成工作而设置。您是在运行x64 PowerShell还是x86?我猜您要运行32位时运行的是64位。您是运行x64 PowerShell还是x86?我的猜测是,当您想要运行32位时,您正在运行64位。