
以下に、Powershell に変換したいバッチ ファイルが 2 つあります。
ファイル拡張子にbat1.batが関連付けられているので、その拡張子をダブルクリックするとbat1.batが実行され、最初のパラメータはダブルクリックされたファイル名になります。
なぜ 2 つの bat ファイルを使用するのでしょうか。bat2 だけを使用すると、コマンド ウィンドウが開いて、最終プログラムが終了するまで表示されます。上記の 2 つのバッチ ファイルを使用すると、タスク バー アイコンのみが表示されます (削除したいアイコンです)。これが、Powershell に変換したい理由です。ファイルの 1 つをダブルクリックして、PS で Access プログラムを開き、アイコンや視覚的な表示をまったく表示しないようにしたいのです。つまり、Access プログラムがその拡張子のファイルを処理するプログラムのように見えます。
バット1.bat
@echo off
@START /MIN c:\temp\bat2.bat %1
exit
バット2.bat
@echo off
"c:\temp\Test.accdb" /cmd %1
exit
答え1
今、これをテストするために PC の前にいないのですが、以下を実行する bat にファイル拡張子を関連付けることはできないでしょうか?
@start "Access wrapper" "c:\temp\Test.accdb" /cmd %1
PowerShell への切り替えは大賛成ですが、最初はバッチ ファイルの方が高速です。また、私の記憶が正しければ、既知のファイル タイプ (accdb ファイルなど) を "start" コマンドに渡すと、そのファイルを開く方法 (Access など) が判別され、スクリプトの次の行に進みます ("/wait" を渡さない限り)。スクリプトに次の行がないため、スクリプトとそのウィンドウは消えてしまいます。
おそらく、レジストリを巧みに編集することでバッチ全体を削除できると思いますが、現在、それをテストするための PC が手元になく、記憶にあるテストされていない情報だけに基づいてレジストリをいじられるのは望ましくありません。