我已经在我的 Windows 7 64 位机器上启用了 telnet 客户端,如果我打开开始菜单并从那里启动 cmd,我就可以运行 telnet。
我通常使用此 AutoHotkey 代码片段实现的键盘快捷键 Win-C 来打开控制台。
#c::Run, C:\WINDOWS\system32\cmd.exe
由于某种奇怪的原因,当我尝试在以这种方式打开的控制台窗口中运行 telnet 时,我得到了
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Steve\Documents>telnet‘telnet’不是内部或外部命令,也不是可运行程序或批处理文件。
在任何控制台中运行路径,无论如何打开,都会产生相同的输出。
有人能解释一下为什么 telnet 可以在一个控制台上运行,但不能在另一个控制台上运行吗?
答案1
代码片段可以使发布解决方案变得更加容易!
您的问题是即使在 Windows 下运行,路径命令 rulez 仍然适用于 DOS。
仔细查看上述每个环境中的路径以及 telnet 程序的位置,并检查命令处理器是否会在每种情况下找到可执行文件。您应该能够在 AHK 中指定 telnet 程序名称的完整路径名,这应该可以解决您的问题。
或者,将一个名为 telnet.bat 的批处理文件放在您的文档文件夹中,该文件调用实际的 telnet 程序。
无论哪种情况,都不要忘记向 telnet 传递命令行输入参数,即:/telnet.exe %0 %1,等等
答案2
看起来这个其他问题的解决方案可能直接适用于您的场景: telnet 无法运行。
32 位 shell 可能无法运行 64 位 Telnet 客户端。您的 AutoHotkey 脚本确实从 System32 目录运行 CMD。
尝试直接从“开始”菜单运行 CMD。看看是否能得到不同的结果。如果没有,请尝试使用 WHERE(在 Telnet 工作的 shell 和不工作的 shell 中),并报告两种情况下的 PATH。这将大大简化任何进一步的故障排除。
答案3
解决该问题的方法:
在 64 位操作系统中,由于默认环境设置,telnet.exe 从“%windir%\WinSXS”子目录使用,而不是从“%windir%\System32”子目录使用。
要解决此问题,请在 AHK 编译器列表中选择 64 位选项,以编译所选的可执行文件,从而在已编译的 AHK 可执行文件中运行 telnet.exe,因为 telnet.exe 在任务列表中被列为 64 位进程选项卡。在 64 位操作系统中,运行“%windir%\System32”子目录中的 32 位 telnet.exe 将无法运行。如果在 64 位操作系统中运行,兼容模式下“%windir%\WinSXS”中的 64 位 telnet.exe 将挂起。
答案4
更新:
您应该验证 telnet.exe 是否已正确安装。
在 Win7 64 位安装中,您可以在类似于以下名称的目录中找到它:
C:\Windows\winsxs\amd64_microsoft-windows-telnet-client_31bf3856ad364e35_6.1.7600.16385_none_1426830c3ebb712d
如果不存在,请卸载并重新安装。