純粋に数値の拡張子を持つファイルを処理する方法 [ 正規表現 ] Windows

純粋に数値の拡張子を持つファイルを処理する方法 [ 正規表現 ] Windows

Windows、バッチ。バッチ for ループでファイルを処理したいのですが、問題は、拡張子が正確に何になるのか全く分からないことです。ただ、数字になるということは分かっています。

私が作成しようとしているのは次のようなものです:

@echo off
For %%X in ("%cd%\*.[0-9]+") do (
  processFile.vbs %%X %%X.csv
  sed -i s/\/t/;/g %%X.csv
  sed -i s/,/:/g %%X.csv
)

しかし、for ループ内に記述したような正規表現は Windows では機能しないようです。

答え1

dirコマンド出力を にパイプする必要がありますfindstr限定セット正規表現の。出典:findstr 正規表現に基づいてファイルを削除するバッチ スクリプト

残念ながら+トークンはサポートされていないので、これが私のベストショットです(ありがとう、スコット!):

@echo off
for /f "tokens=*" %%X in ('dir /b ^| findstr /r /e \.[0-9][0-9]*') do (
    processFile.vbs %%X %%X.csv
    sed -i s/\/t/;/g %%X.csv
    sed -i s/,/:/g %%X.csv
)
  • /rfindstr正規表現を使用して検索するように切り替えます
  • /eスイッチは行末のパターンにマッチします

も、findstrまた奇抜な点が多いなので、警告しておきます。

関連情報