exe不能被识别为内部或外部命令



当我通过命令propmt执行命令安装驱动程序时:

cd C:WindowsSystem32
pnputil.exe -i -a "C:UsersDesktopDriversIPEnabled_001.inf"

It work fine.

But if i execute the command in Installanywhere tool 
It showing the error message:
pnputil.exe is not recognized as an internal or external command

那么你能告诉为什么它显示错误信息以及如何解决这个错误吗?提前谢谢。

请建议安装inf driver的替代方法

pnputil.exe在64位Windows上只能作为64位应用程序使用,这意味着有%SystemRoot%System32pnputil.exe (x64)但没有%SystemRoot%SysWOW64pnputil.exe (x86)。

使用cd C:WindowsSystem32时哪个目录成为当前目录取决于64位Windows和启动Windows命令解释器cmd.exe的应用程序的体系结构。64位应用程序实际上启动%SystemRoot%System32cmd.exe,但32位应用程序启动%SystemRoot%SysWOW64cmd.exe。原因是Windows文件系统重定向器,它将对%SystemRoot%System32的任何文件访问重定向到Windows x64上的%SystemRoot%SysWOW64目录。

对于运行pnputil.exe的任务,最好在执行该文件之前检查该文件是否存在,该文件仅存在于任何独立于Windows架构的Windows上的%SystemRoot%System32目录中。

if exist %SystemRoot%System32pnputil.exe (
    set "SystemPath=%SystemRoot%System32"
) else if exist %SystemRoot%Sysnativepnputil.exe (
    set "SystemPath=%SystemRoot%Sysnative"
) else (
    echo ERROR: Cannot find pnputil.exe to install the driver.
    echo/
    pause
    goto :EOF
)
%SystemPath%pnputil.exe -i -a "%USERPROFILE%DesktopDriversIPEnabled_001.inf"

第一个IF条件对于32位Windows上的32位应用程序和64位Windows上的64位应用程序是成立的。

第二个IF条件对于64位Windows上的32位应用程序为真。 sysative 是Windows x64上用于x86应用程序的特殊重定向器。 sysative 对于x64应用程序不存在。 sysative 不是目录、符号链接或硬链接。所以不可能使用if exist %SystemRoot%Sysnative,因为这个条件永远不会为真。需要检查重定向目录中是否存在文件,例如if exist %SystemRoot%Sysnative*,它仅在64位Windows上当前运行32位cmd.exe时为真。

最后的ELSE分支为真,例如在Windows XP上根本没有pnputil.exe

不建议使用pnputil.exe安装驱动程序。微软免费发布了驱动程序包安装程序DPInst。有32位版本(dpinst32.exe)和64位版本(dpinst64.exe)。使用驱动程序包安装程序可以很容易地安装一个或多个驱动程序。

让我们看看硬件生产公司如何提供适当的驱动程序,如英特尔®使用驱动程序包安装程序安装驱动程序。

在驱动程序安装包中通常有一个目录结构,如:
  • VISTA32
  • VISTA64
  • WIN7-x86
  • WIN7-x64
  • XPx86
  • XPx64

或目录结构,如:

  • VISTA
    • x86
    • x64
  • 这个主题
    • x86
    • x64
  • XP
    • x86
    • x64

目录结构因安装包而异,但这并不重要,通常很容易看出哪个目录下的驱动程序文件适用于哪个版本的Windows(包括体系结构)。

另外dpinst32.exedpinst64.exe要么存储在包含驱动文件的所有子目录的父目录中,要么直接存储在包含驱动文件的目录中的两个驱动目录中。

让我们让驱动程序安装的例子非常简单,并假设在一个包中只有两个驱动程序文件,一个用于Windows x86,一个用于Windows x64。

  • WIN-32
    • dpinst32.exe
    • * . cat
    • * . dll
    • * inf
    • *。系统
  • - 64获胜
    • dpinst64.exe
    • * . cat
    • * . dll
    • * inf
    • *。系统

在32位Windows上安装WIN-32中的32位驱动程序,在64位Windows上安装WIN-64中的64位驱动程序,通过一个简单的批处理文件由32位或64位cmd.exe执行,非常容易。

set "WINARCH=64"
if "%ProgramFiles(x86)%" == "" set "WINARCH=32"
cd WIN-%WINARCH%
dpinst%WINARCH%.exe

环境变量ProgramFiles(x86)只存在于Windows x64上,这使得确定Windows的体系结构非常容易,参见WOW64实现细节。处理器的架构并不重要,因为在一台带有AMD 64位(兼容)处理器的PC上,可以安装32位的Windows。

dpinst32.exedpinst64.exe启动时没有任何选项,只需安装当前目录中找到的所有驱动程序

相关内容

  • 没有找到相关文章

最新更新