「Windowsでエクスプローラーからフォルダを各種ターミナルで開く」の版間の差分
Notion-MW |
Notion-MW |
||
302行目: | 302行目: | ||
たとえば以下のようなvbsを用意する。 | たとえば以下のようなvbsを用意する。 | ||
< | m_with_cap_m | ||
Dim objShell | |||
Set objShell = CreateObject( | <pre class="visual">Dim objShell | ||
Set objShell = CreateObject("WScript.Shell") | |||
objShell.CurrentDirectory = WScript.Arguments(1) | objShell.CurrentDirectory = WScript.Arguments(1) | ||
objShell.Run(WScript.Arguments(0)),,False</ | objShell.Run(WScript.Arguments(0)),,False</pre> | ||
<div style='text-align: center;'>startatdir.vbs</div> | <div style='text-align: center;'>startatdir.vbs</div> | ||
489行目: | 490行目: | ||
<li><p>vbsの例</p> | <li><p>vbsの例</p> | ||
<p>次の節で解説する「(自分が起動された)カレントディレクトリでの起動」にも対応している(引数がない場合)。</p> | <p>次の節で解説する「(自分が起動された)カレントディレクトリでの起動」にも対応している(引数がない場合)。</p> | ||
< | <pre class="visual">Dim objShell | ||
Dim curDir | |||
Set ws = CreateObject("Wscript.Shell") | |||
Dim dir | |||
If WScript.Arguments.Count = 0 Then | |||
dir = ws.CurrentDirectory | |||
Else | |||
dir = Wscript.Arguments(0) | |||
End If | |||
dir = Replace(dir,"%","==%") | |||
ws.run "powershell -Command ""& {Start-Process -Verb Runas -Filepath wt -Argumentlist powershell, -noexit, -command, Set-Location, -LiteralPath, ('\""'''+($args[1].Trim('\""') -replace '''', '''''' -replace ';', '\;' )+'''.Replace(''==%'',''%'')\""')}"" --% ""\"""&dir&"\""""", vbHide | |||
Set objShell = Nothing</pre></li></ul> | |||
</li> | |||
< | |||
<li><p>cmd</p> | <li><p>cmd</p> | ||
<p><code>powershell -Command "& {$bak=$env:MY_PERCENT;$mypath=$args[1].Trim('\"'); $env:MY_PERCENT = '%%';if ($mypath.Length -gt 258) { $mypath = cmd /c \"for %%A in (`\"$($mypath.Replace('%%', '%%MY_PERCENT%%'))`\") do @echo %%~sA\" };$env:MY_PERCENT = $bak;Start-Process -Verb Runas -Filepath wt -Argumentlist '-d', ('\"'+($mypath -replace '\\$','\\\\' -replace ';', '\;')+'\"'), cmd}" --%% "\"%V\""</code></p> | <p><code>powershell -Command "& {$bak=$env:MY_PERCENT;$mypath=$args[1].Trim('\"'); $env:MY_PERCENT = '%%';if ($mypath.Length -gt 258) { $mypath = cmd /c \"for %%A in (`\"$($mypath.Replace('%%', '%%MY_PERCENT%%'))`\") do @echo %%~sA\" };$env:MY_PERCENT = $bak;Start-Process -Verb Runas -Filepath wt -Argumentlist '-d', ('\"'+($mypath -replace '\\$','\\\\' -replace ';', '\;')+'\"'), cmd}" --%% "\"%V\""</code></p> | ||
514行目: | 513行目: | ||
<p><code>"C:\Program Files\Git\usr\bin\sh.exe" "C:\path\to\gb-wt-admin.sh" "%V"</code></p> | <p><code>"C:\Program Files\Git\usr\bin\sh.exe" "C:\path\to\gb-wt-admin.sh" "%V"</code></p> | ||
<p>で、<code>gb-wt-admin.sh</code>の中身は以下。</p> | <p>で、<code>gb-wt-admin.sh</code>の中身は以下。</p> | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="c#">#!/bin/sh | ||
IFS= | |||
LANG=en_US.UTF-8 | |||
echo $*|/bin/sed 's/\\/\\\\/'|/bin/cygpath -f -|printf %q $(/bin/cat) |/bin/sed "s/'/''/g;s/%/==%/g;s/;/\\\\;/g"|/bin/xargs -d '\n' -I {} powershell -Command Start-Process -Filepath wt -ArgumentList "'"'"C:\Program Files\Git\usr\bin\env.exe"'"'" , '"MSYSTEM=MINGW64"' , "'"'"C:\Program Files\Git\usr\bin\sh.exe"'"'" , "'--login'", "'-c'", "'"'"IFS=\;cd $(echo {}| /bin/sed s/==%/%/g) \; exec bash"'"'"</syntaxhighlight> | |||
<p>Cygwinも同様である。</p></li></ul> | |||
<span id="vs-codeのメニューおまけ"></span> | <span id="vs-codeのメニューおまけ"></span> | ||
==== VS Codeのメニュー(おまけ) ==== | ==== VS Codeのメニュー(おまけ) ==== |