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
また奇抜な点が多いなので、警告しておきます。