Finalmente, uma resposta independente do próprio Cygwin.
Isso usa o fato de que, se eu estiver no diretório C:\\Coole chamar o comando C:\\Cygwin\\bin\\mintty.exe, minttyserá aberto automaticamente no diretório atual, ou seja C:\\Cool,.
Primeiro, você precisará criar o arquivo C:\\Cygwin\\silent_run.vbscom 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:\\Cygwinno local real em que sua instalação do Cygwin está.
Em seguida, basta abrir o arquivo C:\\Cygwin\\AddMinttyToContextMenu.regpara instalar suas novas entradas do registro e pronto.
O arquivo C:\\Cygwin\\AddMinttyToContextMenu.regfunciona abrindo primeiro a cmd.exe, mudando para o diretório em que você está e, em seguida, chamando C:\\Cygwin\\silent_run.vbspara abrir o C:\\Cygwin\\bin\\mintty.exeterminal 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.exeterminal sem manter o primeiro cmd.exeque abrimos, aberto.
A primeira entrada de C:\\Cygwin\\AddMinttyToContextMenu.regnão é usada C:\\Cygwin\\silent_run.vbsporque, por padrão, as HKEY_CLASSES_ROOT\Directory\Background\shellchaves já estão abertas no diretório atual, então podemos apenas ligar C:\\Cygwin\\bin\\mintty.exediretamente 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)?