Endlich eine Antwort, die unabhängig von Cygwin selbst ist.
Dies nutzt die Tatsache , dass, wenn ich auf das Verzeichnis bin , C:\\Coolund ich rufe den Befehl C:\\Cygwin\\bin\\mintty.exe, minttyöffnet sich automatisch auf dem aktuellen Verzeichnis, das heißt C:\\Cool.
Zunächst müssen Sie die Datei C:\\Cygwin\\silent_run.vbsmit den folgenden Inhalten erstellen :
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
Als Nächstes verwenden Sie zur Installation dieser Antwort eine Windows-Registrierungsdatei. Fügen Sie dazu einfach den Inhalt der folgenden Datei in eine Datei mit dem Namen einC:\\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"
Korrigieren Sie nun alle fest codierten Pfade, dh C:\\Cygwinan dem tatsächlichen Speicherort, an dem sich Ihre Cygwin-Installation befindet.
Öffnen Sie dann einfach die Datei C:\\Cygwin\\AddMinttyToContextMenu.reg, um Ihre neuen Registrierungseinträge zu installieren, und Sie sind fertig.
Die Datei C:\\Cygwin\\AddMinttyToContextMenu.regöffnet zunächst a cmd.exe, wechselt in das Verzeichnis, in dem Sie sich befinden, und ruft dann C:\\Cygwin\\silent_run.vbsauf, um das C:\\Cygwin\\bin\\mintty.exeTerminal mit den Befehlszeilenoptionen zu öffnen-w max zu öffnen, dh um es maximiert zu öffnen.
Das Skript C:\\Cygwin\\silent_run.vbsist erforderlich, um das C:\\Cygwin\\bin\\mintty.exeTerminal zu öffnen, ohne dass das erste, das cmd.exewir geöffnet haben, geöffnet bleibt .
Der erste Eintrag von C:\\Cygwin\\AddMinttyToContextMenu.regwird nicht verwendet, C:\\Cygwin\\silent_run.vbsda die HKEY_CLASSES_ROOT\Directory\Background\shellSchlüssel standardmäßig bereits im aktuellen Verzeichnis geöffnet sind. Dann können wir einfach aufrufenC:\\Cygwin\\bin\\mintty.exe direkt , damit es sofort funktioniert.
Verweise:
- So fügen Sie dem Windows Explorer ein Kontextmenüelement für Ordner hinzu
- Befehlszeilenargument für VBScript-Übergabe in Pfaden mit Leerzeichen
- Wie übergebe ich einen Befehl mit Leerzeichen und Anführungszeichen als einzelnen Parameter an CScript?
- Aufrufen von vbscript aus einer anderen vbscript-Datei, wobei Argumente übergeben werden
- https://ss64.com/vb/syntax-args.html
- Überprüfen Sie, ob die Zeichenfolge Leerzeichen enthält
- Kommandozeile still mit VbScript ausführen und Ausgabe bekommen?
- http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
- /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
- Wie führe ich ein Batch-Skript aus, das als Argument in VBscript empfangen wurde?
- Kann ich ein Argument an ein VBScript übergeben (mit cscript gestartete vbs-Datei)?