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