Manipulação de parâmetro de nome de arquivo do Windows na ação de tipo de arquivo

Manipulação de parâmetro de nome de arquivo do Windows na ação de tipo de arquivo

Eu tenho uma ferramenta que adicionei à subchave shell da chave de qualquer arquivo em HKEY_CLASSES_ROOT para que ela apareça no menu do botão direito de qualquer arquivo (também tenha isso no menu do diretório).

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard]
@="Path -> Clipboard"

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command]
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

A ferramenta nada mais faz do que copiar o parâmetro fornecido (o caminho do arquivo) para a área de transferência.

Isso funcionou por muito tempo, pelo menos desde o Win ME (pode ter sido recompilado desde então). Também funciona para win-7, mas com algumas peculiaridades: se o caminho do arquivo contiver espaços ou quaisquer outros caracteres não alfanuméricos, ele será abreviado para o nome de compatibilidade do DOS.

Por exemplo:C:\PROGRA~2\PATHTO~1.EXE

Existe uma maneira de contornar isso?

Se eu colocar "o %1caminho está correto, mas o Windows também passa "para o programa (que eu não toquei há um bom tempo. Claro que poderia resolver isso na ferramenta, mas me pergunto se o comportamento bruto poderia ser corrigido no lado do Windows) .

Responder1

Se o nome do programa contiver espaços ou outros caracteres não alfanuméricos, ele será abreviado para o nome de compatibilidade do DOS.

@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

As aspas devem estar em torno das partes individuais, não da string completa.

Neste caso particular, você deve citar apenas a primeira parte (nome do programa)ea sequência inteira:

@="\"C:\\Program Files (x86)\\PathToClipboard.exe\" %1"

Observação:

  • \é usado para escapar das aspas internas (aquelas ao redor do nome do programa)
  • Se você também citar %1(o caminho do arquivo), ele adicionará as aspas quando o caminho do arquivo for passado para o programa, portanto, não cite esta parte.

informação relacionada