ファイル名に記号が含まれるか判定する(ファイルのドロップ)

ツイッター検索でみつけたツイート

あなたの天然記念物さんのツイート

@yrntrlmnmnt: 【挑戦者求む】「記号入りファイル名!@#$%^&()_+~-=`{}[]'.txt」(@は半角に読み替え)という名前のファイルをドロップして、ファイル名に記号があることを判定できるバッチファイルは存在するか?

普通に"%~nx1"で取り出そうとしたらうまくいかなかった。
イコール "=" が引数の区切りとして扱われてしまうみたい。しかもファイルをドロップしたときだけうまくいかないという不思議な挙動。
そこで "%*" をつかって、for /f "delims=" %%F で取り出したあと、%%~nxF を使う方法にしてみたらうまくファイル名だけ取り出せた。

あとは、findstr で検索すればなんとかなるはず。という感じでつくったのがこれ。

echo off
for /f "delims=" %%F in ('echo %*') do echo "%%~nxF">$$tmp.txt
:pause
findstr /R "[-!@#$%^&()_+~=`{}[\]']" $$tmp.txt
if errorlevel 1 goto notfound
echo 記号がありました
goto end
:notfound
echo 記号はありませんでした

:end
pause
del $$tmp.txt

一通り試してみたけど、うまく動いているかな?

※ドロップするファイルのパスによる変化に対応するよう一部修正しました。