![如何使用純數位擴充[正規表示式] Windows 處理文件](https://rvso.com/image/1443803/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%B4%94%E6%95%B8%E4%BD%8D%E6%93%B4%E5%85%85%5B%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F%5D%20Windows%20%E8%99%95%E7%90%86%E6%96%87%E4%BB%B6.png)
窗口,批次處理。我想批次處理文件 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
swith 告訴findstr
使用正規表示式進行搜索/e
switch 匹配行尾的模式
findstr
也是充滿怪癖,所以你已經被警告過。