バッチファイル(.bat)の実行が完了したら、実行したバッチファイルを表示しているフォルダ(エクスプローラー)を閉じたいと思い色々と試しましたが、バッチファイル単体でフォルダを閉じることができず、実行中にVBS(.vbs)を作成して実行、その後VBSを削除する、という力技で解決したのでその方法をご紹介。
他にも方法はあるみたいなので、いい方法があれば教えてほしい…
非推奨(?)
VBS(VBScript)は2023年10月に非推奨となったらしい…
Microsoftは、英語版「Microsoft Learn」において、2023年10月付けでVBScriptをWindowsの非推奨機能にしたことをアナウンスした。
英語版「Microsoft Learn」内の「Deprecated features for Windows client」(Windowsクライアントの非推奨の機能)ページのリストに、「VBScript」が追加されている。
VBScriptがWindowsの非推奨機能に – 当面はオンデマンドで利用可能 | マイナビニュース
VBS
以下のスクリプトが記載されたVBSを作成したい。
Option Explicit
Dim objWord : Set objWord = CreateObject("Word.Application")
Dim colTasks : Set colTasks = objWord.Tasks
Dim FolderName : FolderName = "実行フォルダ名"
If colTasks.Exists(FolderName) Then colTasks(FolderName).Close
objWord.Quit
Set objWord = Nothing:Set colTasks = Nothing
バッチ
ということで、バッチファイル(.bat)の内容は以下です。
:: -- 実行フォルダの情報を取得 -----
set ThisPath=%~dp0
for %%1 in ("%ThisPath:~0,-1%") do set FoloderName=%%~nx1
:: -- vbs作成 -----
(
echo.Option Explicit
echo.Dim objWord : Set objWord = CreateObject^("Word.Application"^)
echo.Dim colTasks : Set colTasks = objWord.Tasks
echo.Dim FolderName : FolderName = "%FoloderName%"
echo.If colTasks.Exists^(FolderName^) Then colTasks^(FolderName^).Close
echo.objWord.Quit
echo.Set objWord = Nothing:Set colTasks = Nothing
) > buf.vbs
:: -- 実行と削除 -----
CSCRIPT buf.vbs
del buf.vbs
参考
Deprecated features in the Windows client – What’s new in Windows | Microsoft Learn