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

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

Embora o cmd.exe possa funcionar com caminhos UNC usando PUSHD \\UNC\Path, estou tentando iniciar o cmd ou um comando semelhante a partir de um caminho UNC. Aqui está o porquê:

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

Como exemplos, abra um prompt de comando aqui:

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

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

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

"net use * ""%1"" "(Para pastas clicadas com o botão direito, funciona para caminhos UNC)

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

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

Minha pergunta é; como obtenho o caminho do 'plano de fundo de uma unidade ou diretório' clicado com o botão direito para os caminhos UNC e Windows expandidos em uma chave de registro para fins de passá-lo para um comando?

Eles entrarão HKCR,Directory\Shell\xxx\commande HKCR,Directory\Background\Shell\xxx\command, respectivamente.

Este é um projeto de código aberto, disponível no GitHub:https://github.com/Ehryk/ContextMenuTools

Responder1

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\" \""

(Aliás, 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 o 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. Eles representam o diretório de trabalho que é o caminho UNC ao clicar com o botão direito em um espaço em branco de um diretório de rede.

Veraquipara obter uma lista completa dessas variáveis.

informação relacionada