Нарешті відповідь, яка не залежить від самого Цигвіна.
Для цього використовується той факт, що, якщо я перебуваю в каталозі 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 для папок
- Аргумент командного рядка 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)?