Finalmente, uma resposta independente do próprio Cygwin.
Isso usa o fato de que, se eu estiver no diretório C:\\Cool
e chamar o comando C:\\Cygwin\\bin\\mintty.exe
, mintty
será aberto automaticamente no diretório atual, ou seja C:\\Cool
,.
Primeiro, você precisará criar o arquivo C:\\Cygwin\\silent_run.vbs
com o seguinte conteúdo:
Function EnquoteString(argument)
EnquoteString = Chr(34) & argument & Chr(34)
End Function
arglist = ""
With WScript.Arguments
For Each arg In .Unnamed
' Wscript.Echo "Unnamed: " & arg
If InStr(arg, " ") > 0 Then
' arg contains a space
arglist = arglist & " " & EnquoteString(arg)
Else
arglist = arglist & " " & arg
End If
Next
End With
CreateObject("Wscript.Shell").Run Trim( arglist ), 0, False
Em seguida, para instalar esta resposta, você usará um arquivo de registro do Windows. Para isso, basta colocar o conteúdo do seguinte arquivo em um arquivo chamadoC:\\Cygwin\\AddMinttyToContextMenu.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020
[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here\Command]
@="\"C:\\Cygwin\\bin\\mintty.exe\" -w max"
[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020
[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here\Command]
@="cmd.exe /c cd /d \"%V\" && wscript \"C:\\Cygwin\\silent_run.vbs\" \"C:\\Cygwin\\bin\\mintty.exe\" -w max"
Agora, corrija todos os caminhos codificados, ou seja, C:\\Cygwin
no local real em que sua instalação do Cygwin está.
Em seguida, basta abrir o arquivo C:\\Cygwin\\AddMinttyToContextMenu.reg
para instalar suas novas entradas do registro e pronto.
O arquivo C:\\Cygwin\\AddMinttyToContextMenu.reg
funciona abrindo primeiro a cmd.exe
, mudando para o diretório em que você está e, em seguida, chamando C:\\Cygwin\\silent_run.vbs
para abrir o C:\\Cygwin\\bin\\mintty.exe
terminal com as opções da linha de comando-w max
, ou seja, para maximizá-lo.
O script C:\\Cygwin\\silent_run.vbs
é necessário para abrir o C:\\Cygwin\\bin\\mintty.exe
terminal sem manter o primeiro cmd.exe
que abrimos, aberto.
A primeira entrada de C:\\Cygwin\\AddMinttyToContextMenu.reg
não é usada C:\\Cygwin\\silent_run.vbs
porque, por padrão, as HKEY_CLASSES_ROOT\Directory\Background\shell
chaves já estão abertas no diretório atual, então podemos apenas ligar C:\\Cygwin\\bin\\mintty.exe
diretamente para que funcione imediatamente.
Referências:
- Como adicionar item de menu de contexto ao Windows Explorer para pastas
- VBScript passa argumento de linha de comando em caminhos com espaços
- Como passar um comando com espaços e aspas como um único parâmetro para o CScript?
- chamando vbscript de outro arquivo vbscript passando argumentos
- https://ss64.com/vb/syntax-args.html
- Verifique se a string contém espaço
- Executando a linha de comando silenciosamente com VbScript e obtendo saída?
- http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
- /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
- Como executar o script em lote recebido como argumento no VBscript?
- Posso passar um argumento para um VBScript (arquivo vbs iniciado com cscript)?