cmd.exe Anpassen der Shell-Erweiterung „Eingabeaufforderung hier öffnen“

cmd.exe Anpassen der Shell-Erweiterung „Eingabeaufforderung hier öffnen“

Ich dachte, ich würde mal nachsehen, ob jemand Hinweise zu folgender Situation hat. Ich habe die Eingabeaufforderung an meine Bedürfnisse angepasst und vor Kurzem die Eingabeaufforderung für meinen Benutzer geändert. Anstatt den Pfad in der Eingabeaufforderung anzuzeigen, möchte ich, dass er immer der Fenstertitel ist.

Ich habe einen neuen Registrierungsschlüssel eingefügt unter

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun

mit Wert

title %cd% 

Dieses Skript wird jedes Mal ausgeführt, wenn die Eingabeaufforderung gestartet wird. Das funktioniert. Immer wenn ich eine Eingabeaufforderung über eine Verknüpfung öffne, funktioniert es ordnungsgemäß.

Wenn ich jedoch eine Eingabeaufforderung über Rechtsklick -> Eingabeaufforderung hier öffnen öffne, wird diese anscheinend nicht ausgeführt. Ich habe versucht, den Shell-Befehl für „Öffnen hier“ unter folgendem Link zu finden:

HKEY_CLASSES_ROOT/Directory/shell/cmd/command

die standardmäßig auf Folgendes eingestellt ist:

cmd.exe /s /k pushd "%V"

Ich habe versucht, dies wie folgt zu ändern:

cmd.exe /s /k "cd %1 & title %cd%"

Das "%1" wurde an anderen Stellen online für ein Open-Here-Skript vorgeschlagen, und wenn ich es richtig verstehe, sollte das & beide Befehle ausführen. Es funktioniert jedoch immer noch nicht jedes Mal, wenn ich hier die Eingabeaufforderung öffne. Das Arbeitsverzeichnis ist tatsächlich korrekt, der Fenstertitel ist immer noch "C:\Windows\System32"

Irgendwelche Hinweise?

Antwort1

Sie waren der Lösung ziemlich nahe. Bei mir funktioniert der folgende Befehl:

cmd.exe /s /k "pushd ""%V"" & title %V"

BEARBEITEN: Es gibt mehrere Stellen in der Registrierung, die die Shell-Erweiterung „Eingabeaufforderung hier“ unterstützen. Damit diese Änderung für alle Objekte (Verzeichnisse, Laufwerke und spezielle Ordner) konsistent funktioniert, müssen Sie die Registrierung nach allen Vorkommen von durchsuchen cmd.exe /s /k pushd "%V"und diese durch den obigen Wert ersetzen.

Antwort2

Probieren Sie diese Website aus, die Leute dort sind wirklich hilfreich. Sie haben eine Übersicht aller Schalter.

http://ss64.com/nt/cmd.html

Und NEIN, ich habe keine Verbindung zu dieser Website, ich versuche nur, hilfreich zu sein. Diese Leute sowie die Website SuperUser.com haben mir hunderte Male geholfen.

CMD.exe Starten Sie eine neue CMD-Shell und führen Sie (optional) einen Befehl/ein ausführbares Programm aus.

Syntax
      CMD [charset] [options]
      CMD [charset] [options] [/c Command] 
      CMD [charset] [options] [/k Command] 

Options   
   /C     Run Command and then terminate
   /K     Run Command and then return to the CMD prompt.
          This is useful for testing, to examine variables

   Command : The command, program or batch script to be run.
             This can even be several commands separated with '&' 
             (the whole should also be surrounded by "quotes")

   /T:fg  Sets the foreground/background colours 
   /X     Enable extensions to CMD.EXE
   /Y     Disable extensions to CMD.EXE 
   /A     Output ANSI characters
   /U     Output UNICODE characters (UCS-2 le)
          These options will affect piping or redirecting to a file.
          Most common text files are ANSI, use these switches
          when you need to convert the character set.
   /D Ignore registry AutoRun commands
      HKLM | HKCU \Software\Microsoft\Command Processor\AutoRun
   /F:ON Enable auto-completion of pathnames entered at the CMD prompt
   /F:OFF Disable auto-completion of pathnames entered at the CMD prompt (default)At the command prompt Ctrl-D gives folder name completion and Ctrl-F gives File and folder name completion.

These key-strokes will display the first matching path. Thereafter, repeated pressing of the same control key will cycle through the list of matching paths. Pressing SHIFT with the control key will move through the list backwards. 
   /Q    Turn echo off
   /S    Strip quote characters from the command_line
   /V:ON Enable delayed environment variable expansion 
         this allows a FOR loop to specify !variable! instead of %variable% 
         expanding the variable at execution time instead of at input time. 
   /V:OFF Disable delayed environment expansion.

   Environment expansion preference can be set permanently in the registry
   HKLM | HKCU  \Software\Microsoft\Command Processor\DelayedExpansion
   Set to either 0x1 or 0x0

   /knetdiag /debug 
   /knetdiag /fix

   The knetdiag switches are undocumented and work in XP only
   they list and (may) fix these networking issues.If /C or /K is specified, then the remainder of the command line is processed as an immediate command in the new shell. Multiple commands separated by the command separator '&' or '&&' are accepted if surrounded by quotes.

Zum Verarbeiten von Anführungszeichen (") wird die folgende Logik verwendet:

  1. Wenn alle der folgenden Bedingungen erfüllt sind, bleiben Anführungszeichen in der Befehlszeile erhalten:
    • Kein /S-Schalter (Anführungszeichen entfernen)
    • Genau zwei Anführungszeichen
    • Keine Sonderzeichen zwischen den beiden Anführungszeichen, wobei „Sonderzeichen“ eines der folgenden ist: & < >( ) @ ^ |
    • Zwischen den beiden Anführungszeichen stehen ein oder mehrere Leerzeichen.
    • Die Zeichenfolge zwischen den beiden Anführungszeichen ist der Name einer ausführbaren Datei.
  2. Ansonsten besteht das alte Verhalten darin, zu prüfen, ob das erste Zeichen ein Anführungszeichen ist, und wenn ja, das führende Zeichen zu entfernen und das letzte Anführungszeichen in der Befehlszeile zu löschen, wobei der gesamte Text nach dem letzten Anführungszeichen erhalten bleibt. Um dieses Verhalten zu unterbinden, verwenden Sie am Anfang und Ende der Befehlszeile ein doppeltes Anführungszeichen "". Vollbild Die Tastenkombination ALT + ENTER schaltet ein CMD-Fenster in den Vollbildmodus. Drücken Sie erneut ALT + ENTER, um zu einem normalen Fenster zurückzukehren. Command.com vs. CMD.exe Alle Befehle auf diesen Seiten setzen voraus, dass Sie die 32-Bit- oder 64-Bit-Befehlszeile (cmd.exe) ausführen.

Der alte 16-Bit-Befehlsprozessor command.com wird bereitgestellt, um Abwärtskompatibilität für 16-Bit-DOS-Anwendungen zu gewährleisten. Command.com hat im Vergleich zu cmd.exe eine sehr eingeschränkte Funktionalität. Beispielsweise kann nach vielen Befehlen kein %errorlevel% festgelegt werden.

Wenn Sie Ihren Batch-Skripten die Erweiterung .CMD statt .BAT geben, werden sie nicht unter command.com ausgeführt, selbst wenn sie auf einen Windows 95-Computer kopiert werden.

Die Umgebungsvariable %COMSPEC% zeigt an, ob Sie CMD.EXE oder command.com ausführen.

Ein wichtiger Unterschied zwischen .CMD- und .BAT-Skripten (die unter CMD.EXE ausgeführt werden) besteht darin, dass bei aktivierten Erweiterungen Befehle wie PATH/APPEND/PROMPT/SET/ASSOC ERRORLEVEL auf 0 zurücksetzen, wenn sie erfolgreich sind. In der alten .BAT-Datei wird ERRORLEVEL nicht geändert, es sei denn, es liegt ein neuer Fehler (Quelle) vor. Unter 64-Bit-Versionen von Windows befindet sich die 32-Bit-Datei CMD.exe unter %windir%\SysWoW64\cmd.exe. Um Kompatibilitätsprobleme zu reduzieren, isoliert das WOW64-Subsystem 32-Bit-Binärdateien von 64-Bit-Binärdateien, indem es Registrierungsaufrufe und einige Dateisystemaufrufe umleitet. Öffnen von CMD über den Windows Explorer Sie können eine neue CMD-Eingabeaufforderung öffnen, indem Sie START, RUN, cmd, OK wählen. Registrierungsschlüssel: ;UNC-Pfade in der Eingabeaufforderung zulassen [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "DisableUNCCheck"=dword:00000001

; Führen Sie einen Befehl aus, wenn CMD.exe gestartet wird [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "AutoRun"=-

; Automatische Vervollständigung aktivieren [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "CompletionChar"=0x9

; Für Windows 7: Fügen Sie dem ; Kontextmenü für Dateisystemordner die Option „CMD-Eingabeaufforderung hier öffnen (Admin)“ mit erhöhten Rechten hinzu: [HKEY_CLASSES_ROOT\Directory\shell\runas]@="CMD-Eingabeaufforderung hier öffnen (Admin)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /k pushd %L"

; Für Windows 7: Fügen Sie dem Kontextmenü „Arbeitsplatz“ die Option „CMD-Eingabeaufforderung hier öffnen (Admin)“ mit erhöhten Rechten hinzu: [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas] @="CMD-Eingabeaufforderung hier öffnen (Admin)" [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas\command] @="cmd.exe"Verlauf vorheriger Befehle Durch Drücken der NACH-OBEN-Taste werden vorherige Befehle aufgelistet, die in der Eingabeaufforderung eingegeben wurden. Andere DOSKEY-Funktionstasten sind standardmäßig geladen (F7, F8, F9) Kopieren und Einfügen / QuickEdit Um die Verwendung von Ausschneiden und Einfügen in der Eingabeaufforderung zu vereinfachen, aktivieren Sie den QuickEdit-Modus wie folgt: Aktivieren Sie das Steuerungsmenü oben links im aktuellen Befehlsfenster, gehen Sie zu Eigenschaften, Registerkarte Optionen und aktivieren Sie dann QuickEdit-Modus. Jetzt können Sie Text mit der Maus auswählen und die Eingabetaste drücken (oder mit der rechten Maustaste klicken), um ihn in die Zwischenablage zu kopieren. Fügen Sie ihn mit Strg+V (oder Rechtsklick) oder über das Menü an einer beliebigen Stelle ein. ESC bricht jede Auswahl ab und kehrt zum Bearbeitungsmodus zurück. Beim Kopieren zwischen Fenstern benötigen Sie möglicherweise einen Klick, um das Fenster auszuwählen, und einen zweiten Klick zum Einfügen. Führen Sie mehrere Instanzen von CMD.exe aus. In der Befehlszeile oder in einem Batch-Skript startet CMD eine neue Instanz von CMD.exe, die im selben Fenster angezeigt wird. Der Befehl EXIT schließt die zweite CMD-Instanz und kehrt zur vorherigen Shell zurück.

Eine Methode zum Aufrufen eines Batch-Skripts von einem anderen aus besteht darin, einen Befehl wie CMD /c C:\docs\myscript.cmd auszuführen.

Die Ausgabe von CMD kann in eine Textdatei umgeleitet werden. Beachten Sie, dass bei Verwendung von CMD /c der Befehl EXIT nicht erforderlich ist.

Die Umgebungsvariable %CMDCMDLINE% wird in die ursprüngliche Befehlszeile erweitert, die an CMD.EXE übergeben wird. Die native Version von CMD.exe befindet sich immer in %windir%\system32, auf 64-Bit-Betriebssystemen gibt es auch eine 32-Bit-CMD.exe in %windir%\SysWOW64

Anhalten oder Stoppen eines Batch-Skripts Die Ausführung eines Batch-Skripts kann durch Drücken von STRG+S angehalten werden. Dies funktioniert auch zum Anhalten eines einzelnen Befehls, wie etwa einer DIR-Auflistung. Durch Drücken einer beliebigen Taste wird der Vorgang fortgesetzt.

Die Ausführung eines Batch-Skripts kann durch Drücken von STRG-C gestoppt werden.

Wenn eine Batchdatei eine andere Batchdatei aufruft, beendet STRG+C beide Batchskripte. Wenn CMD /c verwendet wird, um eine Batchdatei von einer anderen aus aufzurufen, führt STRG+C dazu, dass nur eines der Batchskripte beendet wird. (siehe auch EXIT)

Lange Befehle und lange Dateinamen Unter Windows XP ist die CMD-Befehlszeile auf 8.191 Zeichen beschränkt. Für alle Windows-Versionen sind bei NTFS und FAT Pfadnamen mit bis zu 260 Zeichen zulässig.

Eine Problemumgehung für die begrenzte Pfadnamenlänge besteht darin, ein Präfix \?\ hinzuzufügen,
zum Beispiel:
\?\C:\TEMP\Langes_Verzeichnis\Langer_Dateiname.txt
ErrorLevel
CMD /C gibt einen Fehlerlevel zurück, zum Beispiel gibt CMD /c dir Z:, wobei das Laufwerk Z: nicht existiert, %errorlevel% = 1 an die aufrufende CMD-Shell zurück.
Befehlserweiterungen
Viele der Funktionen von CMD.exe können deaktiviert werden – dies wirkt sich auf alle internen Befehle aus, Befehlserweiterungen sind standardmäßig aktiviert. Dies wird durch das Setzen eines Wertes in der Registry gesteuert: HKCU\Software\Microsoft\Command Processor\EnableExtensions Alternativ können Sie unter Win XP CMD /e:on oder CMD /e:off ausführen.
Beispiele:
Starten Sie ein Programm und übergeben Sie einen Dateinamen als Parameter:
CMD /c write.exe c:\docs\sample.txt
Starten Sie ein Programm und übergeben Sie einen langen Dateinamen:
CMD /c write.exe "c:\sample documents\sample.txt"
Leerzeichen im Programmpfad:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Leerzeichen im Programmpfad + Parameter:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
Leerzeichen im Programmpfad + Parameter mit Leerzeichen:
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 mit Leerzeichen" "Parameter2 mit Leerzeichen""
Starten Sie Demo1 und dann Demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
„Wer sich selbst befehligen kann, befehligt auch andere“ - Hazlitt

Verwandt:

EXIT - Damit schließen Sie eine CMD-Shell und kehren zurück.
CALL - Rufen Sie ein Batchprogramm von einem anderen aus auf .
START - Führen Sie ein Programm, einen Befehl oder eine Batchdatei aus.
DOSKEY Bearbeiten Sie die Befehlszeile, rufen Sie Befehle ab.
Q156276 - Cmd unterstützt keine UNC-Namen als aktuelles Verzeichnis.
Powershell: Sie können die CMD-Shell unter Powershell ausführen. Mit Exit kehren Sie zur PS-Eingabeaufforderung zurück.
Entsprechender Bash-Befehl (Linux): bash - Führen Sie die Bash-Shell aus (auch csh, ksh, sh).

verwandte Informationen