Como inicio o cmd.exe a partir de um caminho UNC (para mapear uma unidade de rede)?

0

Enquanto cmd.exe pode trabalhar com caminhos UNC usando PUSHD \UNC\Path , estou tentando iniciar cmd ou um comando semelhante FROM um caminho UNC. Aqui está o porquê:

Estou adicionando um "Mapear unidade de rede aqui" ao meu conjunto de ferramentas do menu de contexto, como "Iniciar o Powershell aqui" e "Abrir o prompt de comando aqui". Eles adicionam chaves de registro ao registro do Windows e isso funciona muito bem.

Como exemplos, eles abrem um prompt de comando aqui:

"cmd /s /k ""VER && TITLE Command Prompt: %1 && PUSHD ""%1"" "" " (Para clicar com o botão direito em Pastas, funciona para caminhos UNC)

"cmd /s /k ""VER && TITLE Command Prompt: %%%CD%%%"" " (Para clicar com o botão direito em fundos de diretórios, não funciona para caminhos UNC)

O comando é inserido como uma chave de registro DWORD, e isso funciona ao clicar com o botão direito do mouse em uma pasta:

"net use * ""%1"" " (Para clicar com o botão direito em Pastas, funciona para caminhos UNC)

"net use * ""%%%CD%%%"" " (Para clicar com o botão direito em fundos de diretórios, não funciona para caminhos UNC)

Suspeito que %%%CD%%% esteja sendo expandido pelo cmd.exe, que não será iniciado em um caminho UNC.

Minha pergunta é; Como faço para obter o caminho do 'plano de fundo de uma unidade ou diretório' clicado com o botão direito do mouse para caminhos UNC e Windows expandidos em uma chave do Registro para fins de passar a ele para um comando?

Estes irão em HKCR,Directory\Shell\xxx\command e HKCR,Directory\Background\Shell\xxx\command , respectivamente.

Este é um projeto de código aberto, disponível no GitHub: link

    
por Ehryk 25.07.2014 / 03:06

1 resposta

1

Eu não tenho certeza ... mas você quis dizer algo assim? (você precisa usar% V em vez de% 1)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd]
@="Open cmd here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command]
@="cmd /s /k \"VER && TITLE Command Prompt: \"%V\"  && PUSHD \"%V\" \""

(BTW que NoWorkingDirectory é para que você não receba uma mensagem de erro inicial quando o cmd é aberto com um UNC como diretório de trabalho. Isso inicia cmd sem um diretório atual após o qual você faz um pushd para obter uma letra de unidade temporária )

Editar: Como você está clicando em um espaço em branco de um diretório, o parâmetro% 1 não é preenchido (como acontece se você clicar no próprio diretório). Então você precisa usar% V ou% W. Estes representam o diretório de trabalho que é o caminho UNC ao clicar com o botão direito do mouse em um espaço em branco de um diretório da rede.

Veja aqui para uma lista completa dessas variáveis.

    
por 25.07.2014 / 21:57