Наконец, ответ, который не зависит от самого Cygwin.
При этом используется тот факт, что, если я нахожусь в каталоге C:\\Cool
и вызываю команду C:\\Cygwin\\bin\\mintty.exe
, mintty
автоматически открывается текущий каталог, т C:\\Cool
. Е.
Сначала вам нужно будет создать файл C:\\Cygwin\\silent_run.vbs
со следующим содержимым:
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
Далее, чтобы установить этот ответ, вы будете использовать файл реестра Windows. Для этого просто поместите содержимое следующего файла в файл с именемC:\\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"
Теперь исправьте все жестко закодированные пути, т. Е. C:\\Cygwin
В фактическое место, где установлена ваша установка Cygwin.
Затем просто откройте файл, C:\\Cygwin\\AddMinttyToContextMenu.reg
чтобы установить новые записи реестра, и все готово.
Файл C:\\Cygwin\\AddMinttyToContextMenu.reg
работает, сначала открывая a cmd.exe
, переходя в каталог, в котором вы находитесь, затем вызывая, C:\\Cygwin\\silent_run.vbs
чтобы открыть C:\\Cygwin\\bin\\mintty.exe
терминал с параметрами командной строки -w max
, т. Е. Развернуть его в развернутом виде.
Сценарий C:\\Cygwin\\silent_run.vbs
необходим для открытия C:\\Cygwin\\bin\\mintty.exe
терминала без сохранения первого cmd.exe
открытого нами.
Первая запись C:\\Cygwin\\AddMinttyToContextMenu.reg
не используется, C:\\Cygwin\\silent_run.vbs
потому что по умолчанию HKEY_CLASSES_ROOT\Directory\Background\shell
ключи уже открыты в текущем каталоге, тогда мы можем просто позвонить C:\\Cygwin\\bin\\mintty.exe
напрямую, чтобы получить его из коробки.
Ссылки:
- Как добавить пункт контекстного меню в Windows Explorer для папок
- VBScript передать аргумент командной строки в пути с пробелами
- Как передать команду с пробелами и кавычками в качестве единственного параметра в CScript?
- вызов vbscript из другого файла vbscript с передачей аргументов
- https://ss64.com/vb/syntax-args.html
- Проверьте, содержит ли строка пробел
- Запуск командной строки без вывода сообщений с VbScript и получение вывода?
- http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
- /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
- Как запустить пакетный скрипт, полученный в качестве аргумента на VBscript?
- Могу ли я передать аргумент в VBScript (файл vbs, запущенный с cscript)?