Ich habe den Telnet-Client auf meinem Windows 7 64-Bit-Computer aktiviert. Wenn ich das Startmenü öffne und cmd von dort aus starte, kann ich Telnet ausführen.
Normalerweise verwende ich die Tastenkombination Win-C, die von diesem AutoHotkey-Snippet implementiert wird, um eine Konsole zu öffnen.
#c::Run, C:\WINDOWS\system32\cmd.exe
Aus irgendeinem seltsamen Grund, wenn ich versuche, Telnet in einem Konsolenfenster auszuführen, das auf diese Weise geöffnet wurde, erhalte ich
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
C: \ Users \ Steve \ Documents> telnet 'telnet' wird nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt.
Wird der Pfad in einer beliebigen Konsole ausgeführt, unabhängig davon, wie sie geöffnet wurde, wird dieselbe Ausgabe erstellt.
Kann jemand Aufschluss darüber geben, warum Telnet auf einer Konsole ausgeführt wird, auf der anderen jedoch nicht?
quelle
Antworten:
Ein Code-Snippet hätte das Posten einer Lösung viel einfacher gemacht!
Ihr Problem ist, dass der Pfadbefehl rulez auch unter Windows noch für DOS gilt.
Sehen Sie sich Ihren Pfad in jeder erwähnten Umgebung und den Speicherort des Telnet-Programms genauer an und prüfen Sie, ob der Befehlsprozessor die ausführbare Datei in jedem Fall findet. Sie sollten in der Lage sein, den vollständigen Pfadnamen des Telnet-Programmnamens in AHK anzugeben, der Ihr Problem lösen sollte.
Alternativ können Sie eine Batch-Datei mit dem Namen telnet.bat in Ihren Dokumentenordner legen, in der das eigentliche Telnet-Programm aufgerufen wird.
Vergessen Sie in keinem Fall, die Eingabeparameter der Befehlszeile an Telnet zu übergeben, dh: /telnet.exe% 0% 1 usw
quelle
Es sieht so aus, als ob die Lösung für diese andere Frage direkt auf Ihr Szenario zutrifft: Telnet nicht lauffähig .
Auf einer 32-Bit-Shell wird der 64-Bit-Telnet-Client möglicherweise nicht ausgeführt. Ihr AutoHotkey-Skript führt CMD aus dem System32-Verzeichnis aus.
Versuchen Sie, CMD direkt über das Startmenü auszuführen. Überprüfen Sie, ob dies zu unterschiedlichen Ergebnissen führt. Wenn nicht, versuchen Sie, das WHERE zu verwenden (sowohl in der Shell, in der Telnet funktioniert, als auch in der Shell, in der es nicht funktioniert), und geben Sie den PATH aus beiden Fällen an. Dies vereinfacht die weitere Fehlerbehebung erheblich.
quelle
Lösung für dieses Problem:
Auf einem 64-Bit-Betriebssystem wird telnet.exe aus dem Unterverzeichnis '% windir% \ WinSXS' und nicht aus dem Unterverzeichnis '% windir% \ System32' aufgrund der Standardeinstellungen der Umgebung verwendet.
Um das Problem zu lösen, wählen Sie im AHK-Compiler die 64-Bit-Option aus der Liste aus, um die ausgewählte ausführbare Datei zum Ausführen von telnet.exe aus der kompilierten ausführbaren AHK-Datei zu kompilieren, da telnet.exe in der Jobliste als 64-Bit-Prozessregisterkarte aufgeführt ist . Das Ausführen der 32-Bit-Datei "telnet.exe" aus dem Unterverzeichnis "% windir% \ System32" wird unter einem 64-Bit-Betriebssystem nicht ausgeführt. Die 64-Bit-Datei "telnet.exe" aus "% windir% \ WinSXS" im Kompatibilitätsmodus hängt, wenn sie unter einem 64-Bit-Betriebssystem ausgeführt wird.
quelle
Ich gab es schnell auf, herauszufinden, was dieses Problem verursachte, da ich keine dringende Notwendigkeit hatte, dies zu tun. Ich konnte Telnet ausführen, nur nicht so, wie ich es ursprünglich versucht hatte. Selbst als ich es ausführte, fand ich es in einer virtuellen Linux-Maschine weniger nützlich als Telnet. Ich habe zuletzt viel von Telnet (auf jeden Fall in Windows) unter XP Gebrauch gemacht, und das Telnet unter Windows 7 scheint einen Schritt zurückgegangen zu sein.
quelle
Aktualisieren:
Sie sollten überprüfen, ob telnet.exe korrekt installiert ist.
Bei einer 64-Bit-Win7-Installation finden Sie sie in einem Verzeichnis, das dem folgenden ähnlich ist:
C: \ Windows \ winsxs \ amd64_microsoft-windows-telnet-client_31bf3856ad364e35_6.1.7600.16385_none_1426830c3ebb712d
Wenn es nicht vorhanden ist, deinstallieren Sie es und installieren Sie es erneut.
quelle