実現したいこと
エクスプローラーの下記ファイルをダブルクリックで解凍できるようにしたい。
"J:\a\a\t!est.zip"
前提
.zipファイルは関連付けでダブルクリックで起動できる環境は整っているが、
ファイル名に!を含む場合、バッチファイルの変数の格納時点で!が無視されてしまい、解凍が失敗してしまう。
発生している問題・エラーメッセージ
"J:\a\a\t!est.zip"をダブルクリックの実行結果 J:\a\a>setlocal ENABLEDELAYEDEXPANSION J:\a\a>rem === 実行中のバッチファイル自身の名前を取得 J:\a\a>set val= 解凍実行.bat J:\a\a>rem === 実行中のバッチファイル自身の引数を取得 J:\a\a>set val= "J:\a\a\t!est.zip" J:\a\a>rem === valを確認 J:\a\a>echo !val! "J:\a\a\test.zip" J:\a\a>rem === バッチから引数を与えてPowershellを実行 J:\a\a>powershell -file "J:\batch\h\gaibu\解凍実行.ps1" !val! rem ===(2) バッチから引数を与えてPowershellを実行 powershell -file "J:\batch\h\gaibu\解凍実行.ps1" !val! J:\a\a\test.zip パワーシェル引数:J:\a\a\test.zip
該当のソース
解凍実行.bat ========== rem @echo off setlocal ENABLEDELAYEDEXPANSION rem === 実行中のバッチファイル自身の名前を取得 set val= %~nx0 rem === 実行中のバッチファイル自身の引数を取得 set val= %1 rem === valを確認 echo !val! rem === バッチから引数を与えてPowershellを実行 powershell -file "J:\batch\h\gaibu\解凍実行.ps1" !val! ========== 解凍実行.ps1 ========== function 解凍実行($x) { write-host "パワーシェル引数:$x" ※解凍に使用する命令は長いため省略 } 解凍実行 ==========
試したこと
ファイル名に!を含まないzipファイルであれば解凍は成功する
ファイル名に!を含むファイルの場合は!が無視されて実行される
batのechoで確認する限り、変数格納段階で!が無視されている
補足情報(FW/ツールのバージョンなど)
Windows10

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/18 21:17
2023/09/18 23:57