cmd.exe personalizando la extensión de shell "Abrir símbolo del sistema aquí"

cmd.exe personalizando la extensión de shell "Abrir símbolo del sistema aquí"

Pensé en ver si alguien tenía alguna sugerencia sobre la siguiente situación. He estado personalizando el símbolo del sistema según mis necesidades y recientemente cambié el símbolo del sistema para mi usuario. En lugar de mostrar la ruta en el mensaje, me gustaría que siempre fuera el título de la ventana.

Puse una nueva clave de registro en

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun

con valor

title %cd% 

Este script se ejecuta cada vez que se inicia el símbolo del sistema. Esto funciona. Cada vez que abro un símbolo del sistema a través de un acceso directo, esto funciona correctamente.

Sin embargo, cada vez que abro un símbolo del sistema haciendo clic derecho -> Abrir símbolo del sistema, aquí aparentemente esto no se ejecuta. Intenté mirar el comando de shell para abrir aquí ubicado en

HKEY_CLASSES_ROOT/Directory/shell/cmd/command

que por defecto está configurado en:

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

Intenté cambiar esto a:

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

El "%1" se sugirió en otros lugares en línea para un script abierto aquí y, si entiendo correctamente, & debería ejecutar ambos comandos. Sin embargo, todavía no funciona cada vez que abro el símbolo del sistema aquí. El directorio de trabajo es correcto, el título de la ventana sigue siendo "C:\Windows\System32"

¿Algún consejo?

Respuesta1

Estabas bastante cerca de la solución. Para mí el siguiente comando funciona:

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

EDITAR: Hay varios lugares en el registro que admiten la extensión de shell "Símbolo del sistema aquí". Para que este cambio funcione de manera consistente en todos los objetos (directorios, unidades y carpetas especiales), debe buscar en el registro todas las apariciones de cmd.exe /s /k pushd "%V"y reemplazarlas con el valor anterior.

Respuesta2

Pruebe este sitio web, estos chicos son realmente útiles. Tienen avería de todos los interruptores.

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

Y NO, no tengo ninguna afiliación con ese sitio web, solo intento ser útil. Estos chicos, así como el sitio web SuperUser.com, me han ayudado en cientos de ocasiones.

CMD.exe Inicie un nuevo shell CMD y (opcionalmente) ejecute un comando/programa ejecutable.

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.

Se utiliza la siguiente lógica para procesar caracteres de comillas ("):

  1. Si se cumplen todas las condiciones siguientes, se conservan las comillas en la línea de comando:
    • Sin cambio /S (quitar comillas)
    • Exactamente dos comillas
    • No hay caracteres especiales entre las dos comillas, donde especial es uno de: & < >() @ ^ |
    • Hay uno o más caracteres de espacio en blanco entre las dos comillas.
    • La cadena entre las dos comillas es el nombre de un archivo ejecutable.
  2. De lo contrario, el comportamiento anterior es ver si el primer carácter es una comilla y, de ser así, quitar el carácter inicial y eliminar la última comilla en la línea de comando, conservando cualquier texto después de la última comilla. Para negar este comportamiento, utilice un conjunto doble de comillas "" al principio y al final de la línea de comando. Pantalla completa La combinación de teclas ALT + ENTER cambiará una ventana CMD al modo de pantalla completa. presione ALT + ENTER nuevamente para regresar a una ventana normal. Command.com vs CMD.exe Todos los comandos en estas páginas suponen que está ejecutando la línea de comandos de 32 o 64 bits (cmd.exe)

El antiguo procesador de comandos de 16 bits command.com se suministra para proporcionar compatibilidad con versiones anteriores de aplicaciones DOS de 16 bits. Command.com tiene una funcionalidad muy limitada en comparación con cmd.exe, por ejemplo, no podrá establecer un %errorlevel% después de muchos comandos.

Si nombra sus secuencias de comandos por lotes con la extensión .CMD en lugar de .BAT, no se ejecutarán en command.com incluso si se copian en una máquina con Windows 95.

La variable de entorno %COMSPEC% se mostrará si está ejecutando CMD.EXE o command.com

Una diferencia clave entre los scripts .CMD y .BAT (que se ejecutan bajo CMD.EXE) es que con las extensiones habilitadas, comandos como PATH/APPEND/PROMPT/SET/ASSOC restablecerán ERRORLEVEL a 0 si tienen éxito. En el archivo .BAT de estilo antiguo, ERRORLEVEL no se cambiará a menos que haya un nuevo error (fuente). En las versiones de 64 bits de Windows, el CMD.exe de 32 bits se puede encontrar en %windir%\SysWoW64\cmd.exe. Para reducir los problemas de compatibilidad, el subsistema WOW64 aísla los archivos binarios de 32 bits de los de 64 bits redirigiendo las llamadas de registro y algunos llamadas al sistema de archivos. Abrir CMD desde el Explorador de Windows Puede abrir un nuevo indicador de CMD eligiendo INICIO, EJECUTAR, cmd, OK Claves de registro: ;Permitir rutas UNC en el símbolo del sistema [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "DisableUNCCheck"=dword:00000001

; Ejecute un comando cuando se inicie CMD.exe [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "AutoRun"=-

; Activar finalización automática [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "CompletionChar"=0x9

; Para Windows 7: agregue una opción elevada 'Abrir mensaje CMD aquí (Administrador)' al; Menú contextual para carpetas del sistema de archivos: [HKEY_CLASSES_ROOT\Directory\shell\runas]@="Abrir mensaje CMD aquí (Admin)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /k pushd %L"

; Para Windows 7: agregue una opción elevada 'Abrir mensaje CMD aquí (Administrador)' al; Menú contextual de Mi PC: [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas] @="Abrir mensaje CMD aquí (Admin)" [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D }\shell\runas\command] @="cmd.exe"Historial de comandos anteriores Al presionar la flecha ARRIBA se enumerarán los comandos anteriores ingresados ​​en el símbolo del sistema. Otras teclas de función de DOSKEY se cargan de forma predeterminada (F7, F8, F9) Copiar y pegar / QuickEdit Para simplificar el uso de cortar y pegar en el símbolo del sistema, habilite el modo QuickEdit de la siguiente manera: Active el menú de control en la parte superior izquierda de la ventana actual. ventana cmd, vaya a Propiedades, pestaña Opciones y luego marque el Modo QuickEdit. Ahora puede seleccionar texto con el mouse y presionar Enter (o hacer clic derecho) para copiarlo al portapapeles. Pegue en cualquier lugar usando Control+V (o clic derecho) o mediante el menú. ESC cancelará cualquier selección y volverá al modo de edición. Al copiar entre ventanas, es posible que necesite un clic para seleccionar la ventana y un segundo clic para pegar. Ejecute varias instancias de CMD.exe En la línea de comando o en un script por lotes, CMD iniciará una nueva instancia de CMD.exe que aparecerá en la misma ventana. El comando EXIT cerrará la segunda instancia de CMD y volverá al shell anterior.

Un método para llamar a un script por lotes desde otro es ejecutar un comando como CMD /c C:\docs\myscript.cmd

La salida de CMD se puede redirigir a un archivo de texto. Tenga en cuenta que cuando se utiliza CMD /c, el comando EXIT no es necesario.

La variable de entorno %CMDCMDLINE% se expandirá a la línea de comando original pasada a CMD.EXE. La versión nativa de CMD.exe siempre está en %windir%\system32; en sistemas operativos de 64 bits también hay un CMD.exe de 32 bits en % windir%\SysWOW64

Pausar o detener un script por lotes La ejecución de cualquier script por lotes se puede pausar presionando CTRL-S. Esto también funciona para pausar un solo comando, como un listado DIR. Al presionar cualquier tecla se reanudará la operación.

La ejecución de cualquier script por lotes se puede detener presionando CTRL-C

Si un archivo por lotes LLAMA a otro archivo por lotes, CTRL-C saldrá de ambos scripts por lotes. Si se utiliza CMD /c para llamar un archivo por lotes desde otro, CTRL-C hará que solo finalice uno de los scripts por lotes. (ver también SALIR)

Comandos largos y nombres de archivos largos En Windows XP, la línea de comandos CMD está limitada a 8.191 caracteres. Para todas las versiones de Windows, NTFS y FAT permiten nombres de ruta de hasta 260 caracteres.

Una solución alternativa para la longitud limitada del nombre de ruta es anteponer el prefijo \?\,
por ejemplo:
\?\C:\TEMP\Long_Directory\Long_Filename.txt
ErrorLevel
CMD /C devolverá un nivel de error, por ejemplo CMD /c dir Z: donde se encuentra la unidad Z : no existe, devolverá %errorlevel% = 1 al shell CMD que llama.
Extensiones de comandos
Gran parte de la funcionalidad de CMD.exe se puede deshabilitar; esto afectará a todos los comandos internos; las extensiones de comandos están habilitadas de forma predeterminada. Esto se controla estableciendo un valor en el registro: HKCU\Software\Microsoft\Command Processor\EnableExtensions Alternativamente, en Win XP puede ejecutar CMD /e:on o CMD /e:off
Ejemplos:
ejecute un programa y pase un parámetro de nombre de archivo:
CMD /c write.exe c:\docs\sample.txt
Ejecute un programa y pase un nombre de archivo largo:
CMD /c write.exe "c:\sampledocuments\sample.txt"
Espacios en la ruta del programa:
CMD /c "" c:\Program Files\Microsoft Office\Office\Winword.exe""
Espacios en la ruta del programa + parámetros:
CMD /c ""c:\Program Files\demo.cmd"" Parámetro1 Param2
Espacios en la ruta del programa + parámetros con espacios:
CMD /k ""c:\batch files\demo.cmd" "Parámetro 1 con espacio" "Parámetro2 con espacio""
Inicie Demo1 y luego inicie Demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
“Aquellos que pueden dominarse a sí mismos, dominan a los demás” - Hazlitt

Relacionado:

SALIR: use esto para cerrar un shell CMD y regresar.
LLAMADA: llame a un programa por lotes desde otro
INICIO: ejecute un programa, comando o archivo por lotes
DOSKEY Edite la línea de comandos, recupere comandos
Q156276: Cmd no admite nombres UNC como directorio actual
Powershell: puede ejecutar el shell CMD en Powershell, saldrá regresará al mensaje de PS.
Comando bash equivalente (Linux): bash: ejecuta el shell bash (también csh, ksh, sh)

información relacionada