Chame o vbscript de um arquivo em lotes (.cmd) com uma única linha 'wscript.exe% 1'. Coloque o arquivo cmd na lista de envio.
Não ria.
Estou em um ambiente corporativo com uma área de trabalho bloqueada. Instalar aplicativos de terceiros não é uma opção.
O Notepad está praticamente certo, mas a maior dor é que ele não detecta se um arquivo já está aberto. Acabo com edições em arquivos em dois lugares.
Então, eu pensei em escrever um pouco de vbs para verificar se o arquivo pode estar aberto e, em vez de abri-lo duas vezes, basta levantar a janela suspeita.
Dim Arg, var1
Set Arg = WScript.Arguments
'Parameter1, begin with index0
var1 = Arg(0)
set fso = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")
If Not oShell.AppActivate( fso.GetFileName(var1) + " - Notepad") Then
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Exec("notepad.exe " + var1 )
Set objShell = Nothing
End If
funciona muito bem. Mas ...
Não consigo definir um vbs para o destino de um menu "Abrir com ...". Parece que posso fazer um .bat, .cmd, .exe, .pif. A seleção manual de ".vbs" não funciona. Ele dirá que o arquivo .txt "não é um aplicativo win32 válido"
Como posso obter a ação padrão de um arquivo para abrir com um script vbs?
Chame o vbscript de um arquivo em lotes (.cmd) com uma única linha 'wscript.exe% 1'. Coloque o arquivo cmd na lista de envio.
A associação de arquivos do Windows pode ser em todo o sistema ou por usuário, e o último tem precedência. Portanto, você pode substituir o comportamento padrão de .txt
arquivos criando uma chave de registro específica:
Abra um prompt de comando .
Digite ou cole o seguinte comando e pressione Enter após substituir X:\Path\to\myscript.vbs
pelo caminho real:
reg add "HKCU\Software\Classes\txtfile\shell\open\command" /ve /t REG_SZ /d "\"%windir%\System32\wscript.exe\" \"X:\Path\to\myscript.vbs\" \"%1\"" /f
As alterações são aplicadas imediatamente.
crie o arquivo 1.cmd
no diretório temp do usuário.
1.cmd:
cmd
abra o arquivo e faça o que quiser)