回答:
非常に簡単なテストを実行したところ、次のレジストリエントリによって、エクスプローラのすべてのフォルダのコンテキストメニューに「PowerShell here」項目が追加されます。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\PowerShellHere]
@="&PowerShell here"
[HKEY_CLASSES_ROOT\Directory\shell\PowerShellHere\command]
@="cmd.exe /c start \"PS\" powershell.exe -NoExit -Command \"cd \\\"%1\\\"\""
レジストリにインポートするだけです。cmd.exeパスをハードコーディングする必要を回避するために、Powershellのブートストラップに使用しています。
cmdスクリプト/バッチファイルについて。デフォルトでPowerShell内でCMDスクリプトを実行することはあまり意味がないと思います。しかし、HKCR\cmdfile\shell\openレジストリキーを変更することによっても可能かもしれません
PowerShellでCMDバッチファイルを実行することはそれほど難しくありません。
%COMSPEC%をpowershell.exe使用してポイントするように変数を変更してみることができますがsetx、これが本当に悪いアイデアであることを認識して再度変更するのに長い時間がかかるとは思いません。
* .batではなく* .ps1としてファイルを保存すると、Powershellが使用されます
%COMSPEC%非CMD互換のシェルに変更する実験はしていませんが、PowerShellに変更すると、.cmd/ .batファイルがPowerShellで実行され、失敗することになると思います。バッチファイルを使用するために必要な多くのソフトウェアをインストールしたので、そうすることは悪い考えです。また、日常的にファイルを管理するためにCMD(実際には拡張スーパーセットであるTCC)を常に使用しているため、私は少し偏っています。比較するととても強力です。
%ComSpec%笑って、Win7システムでPowerShellを指すように変更しました。.cmdテストした最初のいくつかのファイルは問題なく動作します。それらはcmd固有の構成体(for、変数操作if)を含むため、PSは明らかに呼び出す必要がある時期を知るのに十分スマートcmd.exeです。
%ComSpec%powershell に変更すると、Mercurialバージョン管理コマンドが中断されます。