我很难获得在python中运行的nbtstat命令。每当我运行以下代码时,我都会收到错误“WindowsError:[错误2]系统无法找到指定的文件”。
print(subprocess.check_output(["nbtstat","-A",ipaddress]))
我也试过
print(subprocess.check_output(["C:\\Windows\\System32\\nbtstat.exe","-A",ipaddress]))
和
print(subprocess.check_output("nbtstat -A "+ipaddress))
并且这些版本都不起作用。
命令中是否有一些东西让它正常运行?
在Windows上运行python 2.7.11(无法更新)
答案 0 :(得分:2)
您需要将命令编写为可执行文件的路径,并将\ System32用于\ sysnative。
此命令可以根据需要运行:
print(subprocess.check_output(["C:\\Windows\\sysnative\\nbtstat.exe","-A",ipaddress]))
This page describes the sysnative folder,但我会在这里给出简短(并且非常简单)的解释:
System32和Sysnative实际上是通过不同名称访问的同一文件夹,但如果使用该文件夹的程序是32位,则用于访问此文件夹的名称会更改文件夹中可用的选项。如果32位程序使用System32路径,则只有32位选项可用,并且所有64位程序都被隐藏。如果它改为使用Sysnative路径,则64位选项可用。
事实证明,nbtstat.exe实际上是一个64位程序,因此当32位脚本或其他程序试图通过System32文件夹打开它时,它会返回一个错误,指出该程序没有。存在。由于查找命令的默认路径是System32,如果您没有指定路径,那么它也会说该程序不存在。
因此,为了使32位程序使用64位命令可执行文件,必须显式指定可执行文件的路径,并且必须通过Sysnative路径而不是System32路径指定。< / p>