Como executar um arquivo no prompt Executar do Windows sem incluir a extensão do arquivo

0

Se eu tiver um script do PowerShell nomeado myscript.ps1e estiver no PATH, gostaria de pressionar Windows+ r, digite "myscript" e pressione enter. Atualmente, ele exige que eu digite myscript.ps1e funciona bem.

Encontrei algumas respostas que sugerem ftype, assoce a PATHEXTvariável de ambiente, mas que afeta apenas os scripts executados no prompt de comando ou no PowerShell, não no prompt Executar do explore.exe.

Presumo que haja alguma configuração de registro, mas não sei o que procurar, pois fileexthá centenas de entradas. Também procurei, .batpois os arquivos em lote funcionam automaticamente, mas não encontrei nada óbvio.

Eu pensei que tinha encontrado sob under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\KindMap, adicionando um valor .ps1 e defini-lo programcomo.

Notei também que .bat, .cmd, .exe, .lnk e .msi tinham um HKCR\<app-handler-id>\shellex\PropertySheetHandlers\ShimLayer Property Pageconjunto para cada um {513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}, mas adicionando isso HKCR\Microsoft.Powershell.1também não valia a pena.

dx_over_dt
fonte
Você poderia escrever um script de wrapper, que listaria todos os seus scripts pessoais e deixaria escolher um para executar?
Xen2050 18/01
Pensei nisso e posso fazê-lo, mas ainda quero que minha pergunta seja respondida. Estou curioso para saber como o Windows funciona.
dx_over_dt 18/01
Eu acho que você precisa do nome completo para executar as coisas. Se você estivesse em um terminal, poderia tentar pressionar TAB para concluir automaticamente muitas coisas (programas, arquivos, diretórios ...)
Xen2050 18/01
Porém, certas extensões de arquivo não são necessárias: .bat, .exe, .cmd etc. Suponho que elas não sejam codificadas no sistema operacional, portanto, deve haver uma maneira de alterá-las e adicionar .ps1.
dx_over_dt 18/01
11
@EricW. Sim, eu simplesmente não gosto de soluções alternativas em geral. Além disso, requer um arquivo em lotes para cada script, a menos que você queira usar o script ps1 como argumento para o script em lotes; nesse caso, ele economiza um total de 2 caracteres, assumindo que o nome do arquivo do lote seja apenas 1. Acontece que .lnk (arquivos de atalho) também não requer uma extensão, por isso acho que vou seguir esse caminho meu único script.
dx_over_dt 18/01