Como faço para escapar de espaços para o comando ftype no Windows?

Como faço para escapar de espaços para o comando ftype no Windows?

Criei um novo tipo de arquivo contendo espaços e especifiquei o comando open para ele:

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

Até aí tudo bem, mas agora não consigo verificar qual comando é usado para abrir arquivos deste tipo:

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

Eu tentei usaro símbolo do cursor, sem efeito. Como faço para que o ftype aceite espaços para recuperar o comando atualmente em uso?

Responder1

Você está fazendo isso errado. Primeiro, algumas leituras básicas no MSDN:

Quando você usa assoc .ext=fileType, issotipo de arquivoé na verdade oID do programa. Como afirma o último link acima:

O formato adequado de um nome de chave ProgID é [Fornecedor ou Aplicativo].[Componente].[Versão],separados por pontos e comsem espaços, como em Word.Document.6. A parte Versão é opcional, mas altamente recomendada.

A descrição do tipo de arquivo que você pode adicionar como umNomeTipoAmigávelvalor no registro.

Por exemplo:

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

Aqui.TXTé obviamente a extensão e o(Padrão)o valor é definido como ProgID, ou sejaarquivo txt.

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

Aqui para o ProgID temos o(Padrão)valor definido para a descrição do tipo de arquivo e o mesmo paraNomeTipoAmigável. Em geral, embora o último seja usado para exibir recursos de string localizados e deva ser formatado como uma string indireta (um nome de arquivo totalmente qualificado e um valor de recurso precedido pelo símbolo @, por exemplo, @%SystemRoot%\system32\notepad.exe,-469paraarquivo txt).


Não sei por que assoce ftypeambos permitem que você use espaços nas strings fileType/ProgID, pois isso vai contra as próprias diretrizes da MS. ProgIDs com espaços até funcionam corretamente se criados manualmente no registro (acabei de testar), mas significativamente não encontrei um único ProgID criado por qualquer programa que use espaços. Mais estranho ainda é como ftypeparece rejeitar espaços enquantorecebendodados (aspas não ajudam), embora não tenha problemas em aceitá-los enquantocontextoa string de comando em primeiro lugar (as aspas nem são necessárias durante a configuração).

Meu palpite é que alguém se esqueceu de informar os ftypedesenvolvedores sobre essa discrepância, porque não consegui descobrir uma maneira de fazer o comando recuperar a string de comando que ele havia definido anteriormente para um ProgID contendo espaços. Meu conselho? Siga as diretrizes, não use espaços nos ProgIDs e evite o sofrimento de tentar descobrir as peculiaridades do Windows.

informação relacionada