shell\open\command のファイルパスを加工して渡す方法

shell\open\command のファイルパス を 8.3形式の ショートファイルパスにして アプリを起動させる方法が知りたかったので、色々実験した。 ・ω・

これも、某大手アプリが 起動ソフト.exe "%1" とすると、ファイル名として "(ダブルクオート) まで解釈する酷い作りになっていたせいなのだが…。

1. コマンドライン

cmd /q /c for /f "delims=" %%i in ("%1") do ( 起動ソフト.exe %%~fdsi )

2. PowerShell

cmd /c for /f "delims=" %%a in ('where powershell.exe') DO @(%%a
-WindowStyle Hidden -Command "$fso=New-Object -comObject
Scripting.FileSystemObject; 起動ソフト.exe ($fso.GetFile(\"%1\")).ShortPath")

注: 起動ソフト名 のパス の \ は エスケープして \\ にする必要がある

shell\open\command レジスタに登録する場合、 powershell.exe は直接起動できないため、 where powershell.exe を利用してフルパスを取得してから実行している。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です