Finalmente una risposta indipendente dallo stesso Cygwin.
Questo utilizza il fatto che, se mi trovo nella directory C:\\Cool
e chiamo il comando C:\\Cygwin\\bin\\mintty.exe
, mintty
si aprirà automaticamente nella directory corrente, ovvero C:\\Cool
.
Innanzitutto, dovrai creare il file C:\\Cygwin\\silent_run.vbs
con i seguenti contenuti:
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
Successivamente, per installare questa risposta, utilizzerai un file di registro di Windows. Per questo, basta inserire il contenuto del seguente file in un file denominatoC:\\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"
Ora, correggi tutti i percorsi codificati, ovvero C:\\Cygwin
la posizione effettiva in cui si trova l'installazione di Cygwin.
Quindi, basta aprire il file C:\\Cygwin\\AddMinttyToContextMenu.reg
per installare le nuove voci del registro e il gioco è fatto.
Il file C:\\Cygwin\\AddMinttyToContextMenu.reg
funziona aprendo prima a cmd.exe
, passando alla directory in cui ci si trova, quindi chiamando C:\\Cygwin\\silent_run.vbs
per aprire il C:\\Cygwin\\bin\\mintty.exe
terminale con le opzioni della riga di comando -w max
, ovvero per aprirlo al massimo.
Lo script C:\\Cygwin\\silent_run.vbs
è necessario per aprire il C:\\Cygwin\\bin\\mintty.exe
terminale senza tenere cmd.exe
aperto il primo che abbiamo aperto.
La prima voce di C:\\Cygwin\\AddMinttyToContextMenu.reg
non viene utilizzata C:\\Cygwin\\silent_run.vbs
perché per impostazione predefinita le HKEY_CLASSES_ROOT\Directory\Background\shell
chiavi sono già aperte nella directory corrente, quindi possiamo semplicemente chiamare C:\\Cygwin\\bin\\mintty.exe
direttamente per farlo funzionare immediatamente.
Riferimenti:
- Come aggiungere la voce di menu contestuale a Esplora risorse per cartelle
- VBScript passa l'argomento della riga di comando in percorsi con spazi
- Come passare un comando con spazi e virgolette come singolo parametro a CScript?
- chiamando vbscript da un altro file vbscript passando argomenti
- https://ss64.com/vb/syntax-args.html
- Controlla se la stringa contiene spazio
- Esegui la riga di comando in silenzio con VbScript e ottieni output?
- http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
- /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
- Come eseguire lo script Batch ricevuto come argomento su VBscript?
- Posso passare un argomento a un VBScript (file vbs avviato con cscript)?