Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件
Posted
技术标签:
【中文标题】Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件【英文标题】:Python and Windows 10: 'telnet' is not recognized as an internal or external command, operable program or batch file 【发布时间】:2020-04-02 16:21:33 【问题描述】:我快要发疯了。
从 python 脚本启动时,我无法运行 telnet。我正在新安装的 Windows 10 上运行。
当我运行这个脚本时:
import subprocess
cmdline = "telnet 172.19.52.34"
rc = subprocess.call("start cmd /K " + cmdline, shell=True)
我得到了可怕的错误。 CMD 保持打开状态,我在 C:\Windows\System32 中找不到 telnet 命令。
但是当我打开一个普通的 CMD 时,telnet 从 C:\Windows\System32 工作。手动查看 C:\Windows\System32\ 会显示 telnet 可执行文件。
当我在 python 启动的 CMD 中测试 PATH 环境变量时,C:\Windows\System32\ 就在那里。
非常感谢任何指向解决方案的指针。
请再次将理智带入我的世界。 ;-)
亲切的问候。
/伯恩哈德
【问题讨论】:
您已经查看了路径变量等,但是当您手动使用命令行时,您可以实际运行您的 python 代码试图运行的命令吗?start cmd /K telnet
?
也有可能start
实际上不是一个命令,而是一个命令行直接支持的函数。你可以只运行subprocess.call("telnet", shell=True)
吗?
Start
是 cmd 的命令。 Start
用于以不寻常的方式启动程序。尝试以正常方式启动 telnet。输入start /?
。
如果我从 Windows Run: "cmd /K telnet 172.19.52.34" 运行它,它工作正常。
Telnet 从我的脚本中只是不“可见”。我从没想过这是可能的。
【参考方案1】:
我发现了问题:这是在 64 位 Windows 上使用 32 位 python 的问题。在我安装了 64 位版本的 python 之后,它就可以工作了。
【讨论】:
那是什么意思。 32 位程序将在 SYSWoW64 中查找不是 System32 的文件。您可以通过C:\Windows\sysnative\telnet
指定 64 位版本。请参阅docs.microsoft.com/en-us/windows/win32/winprog64/…32 位应用程序可以通过将 %windir%\Sysnative 替换为 %windir%\System32 来访问本机系统目录【参考方案2】:
您的 Windows 注册表中启用了 telnet 命令吗?
【讨论】:
以上是关于Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件的主要内容,如果未能解决你的问题,请参考以下文章