28
28
Windowsのバッチファイルで文字列の一部を抽出する方法は?
バッチ(cmd)ファイルの変数に “Abc_123 "のような値があるとします。私は "123 "だけを含む変数で終わらせたいと思います。これを行うための組み込みの方法はありますか?
典型的なWindows(Vista/2008)システムに組み込まれている限り、その方法や性能にはあまりこだわらない。
バッチ(cmd)ファイルの変数に “Abc_123 "のような値があるとします。私は "123 "だけを含む変数で終わらせたいと思います。これを行うための組み込みの方法はありますか?
典型的なWindows(Vista/2008)システムに組み込まれている限り、その方法や性能にはあまりこだわらない。
アンダースコアの後にすべてを入れたい場合(文字列の長さやアンダースコアがどこにあるかは必ずしもわからないが、アンダースコアは1つしかないことに頼ることができる)、試してみてください。
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
基本的に、文字列はアンダースコアをデリミタとして使用してトークンに分割されます (delims=_)。2 番目のトークン (tokens=2) だけが (変数 %%a として) for ループに渡されます。この場合、1 つの文字列を扱っているので、ループは 1 回だけ実行されます。
アンダースコアの前と後の両方を保存したい場合は、試してみてください。
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
%%a はスプリットの最初のトークンの変数であり、%%b はスプリットの 2 番目のトークンの変数であることに注意してください。
もし、バッチ言語が十分に強力ではないと感じたら、 Windows PowerShell を使用することができます。これはWindowsのすべてのバージョンにデフォルトでインストールされているわけではありませんが、無料でダウンロードすることができます。
PowerShell言語が好きではないのであれば、Perlがあります。ただし、すべてのシステムにインストールする必要があります。他にもあります。