¿Cómo puedo escapar de los espacios para el comando ftype en Windows?

¿Cómo puedo escapar de los espacios para el comando ftype en Windows?

Creé un nuevo tipo de archivo que contiene espacios y especifiqué el comando de apertura para él:

assoc .php="PHP Script"
ftype "PHP Script"="c:\program files (x86)\php\php.exe" -f "%1" -- %~2

Hasta ahora todo bien, pero ahora no puedo comprobar qué comando se utiliza para abrir archivos de este tipo:

ftype "PHP Script"
File type 'PHP' not found or no open command associated with it.

He intentado usarel símbolo de intercalación, sin ningún efecto. ¿Cómo consigo que ftype acepte espacios para recuperar el comando actualmente en uso?

Respuesta1

Lo estás haciendo mal. Primero, algunas lecturas previas sobre MSDN:

Cuando lo usas assoc .ext=fileType, esoTipo de archivoes en realidad elID de programa. Como dice el último enlace de arriba:

El formato adecuado del nombre de una clave ProgID es [Proveedor o Aplicación].[Componente].[Versión],separados por periodos y conNo hay espacios, como en Word.Document.6. La parte de Versión es opcional pero muy recomendable.

La descripción del tipo de archivo que puede agregar comoNombre de tipo amigablevalor en el registro.

Por ejemplo:

[HKEY_CLASSES_ROOT\.txt]
@="txtfile"
"PerceivedType"="text"
"Content Type"="text/plain"

Aquí.TXTes obviamente la extensión y el(Por defecto)El valor se establece en ProgID, es decirarchivo de texto.

[HKEY_CLASSES_ROOT\txtfile]
@="Text Document"
"FriendlyTypeName"="Text Document"

Aquí para el ProgID tenemos el(Por defecto)valor establecido en la descripción del tipo de archivo, y lo mismo paraNombre de tipo amigable. En general, aunque este último se utiliza para mostrar recursos de cadena localizados y debe formatearse como una cadena indirecta (un nombre de archivo completo y un valor de recurso precedidos por el símbolo @, por ejemplo @%SystemRoot%\system32\notepad.exe,-469paraarchivo de texto).


No sé por qué assocy ftypeambos le permiten usar espacios en las cadenas fileType/ProgID, ya que eso va en contra de las propias pautas de MS. Los ProgID con espacios incluso funcionan correctamente si se crean manualmente en el registro (acabo de probar), pero significativamente no encontré ni un solo ProgID creado por ningún programa que use espacios. Más extraño aún es cómo ftypeparece rechazar espacios mientrasconseguirdatos (las comillas no ayudan), mientras que no tiene problemas para aceptarlos mientrasconfiguraciónla cadena de comando en primer lugar (las comillas ni siquiera son necesarias durante la configuración).

Supongo que alguien se olvidó de informar a los ftypedesarrolladores sobre esta discrepancia, porque no pude encontrar una manera de hacer que el comando recupere la cadena de comando que él mismo había configurado previamente para un ProgID que contiene espacios. ¿Mi consejo? Siga las pautas, no use espacios en los ProgID y ahórrese la molestia de intentar descubrir las peculiaridades de Windows.

información relacionada