![純粋に数値の拡張子を持つファイルを処理する方法 [ 正規表現 ] Windows](https://rvso.com/image/1443803/%E7%B4%94%E7%B2%8B%E3%81%AB%E6%95%B0%E5%80%A4%E3%81%AE%E6%8B%A1%E5%BC%B5%E5%AD%90%E3%82%92%E6%8C%81%E3%81%A4%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%20%5B%20%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%20%5D%20Windows.png)
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
)
/r
findstr
正規表現を使用して検索するように切り替えます/e
スイッチは行末のパターンにマッチします
も、findstr
また奇抜な点が多いなので、警告しておきます。