バッチファイルでファイル名の特定数値を拾う方法
あるデータが多数あります。
これを加工するコマンドライン実行型プログラムがあり、それをバッチファイル使って連続実行かけています。
ファイル名の例は、
RESULT_X1900_Y40.dat
のようになっていて、拡張子の前に
「X<自然数① 桁数バラバラ>_Y<自然数② 桁数バラバラ>」
という文字列が存在します。
この自然数①と自然数②の値をコマンドライン実行型プログラムの実行時引数に入力しています。
バッチファイル、プロンプト上の操作でこの値を取得することできますか?
現在は桁数バラバラに対処する方法がなく、
set DY=%FILENAME:~-2%
set DX=%FILENAME:~-8,4%
のように前半4ケタ、後半2ケタの場合、前半i桁、後半j桁の場合、と存在するパターン全部を地道に打っています。
VBA、VBS、シェルスクリプトでなら文字列分解もできるのですが、バッチファイルでやり方がわかりません。
わかる方いらっしゃいましたらご教授願います。
for と set の置換組み合わせれば出来そうな気がする。というか試してみたら多分できた。%~ni でサフィックス除去できるんで、それ利用して分離してみた。
set FILENAME=RESULT_X1900_Y40.dat
for /f %%i in (“%FILENAME%”) do set ff=%%~ni
set ff=%ff:_=.%
set dx=%ff:*.X=%
set dy=%ff:*.Y=%
for /f %%i in (“%dx%”) do set dx=%%~ni
for /f %%i in (“%dy%”) do set dy=%%~ni
echo %dx% %dy%
できました。いったん置き換えやすいように「.」に変換して、そのうえでその周囲から必要文字列を取り出しているんですね。すごい助かりました!!