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 正则表达式删除文件的批处理脚本
不幸的是,+
token 不受支持,所以这是我最好的尝试(谢谢,斯科特!):
@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
swicth 告诉findstr
使用正则表达式进行搜索/e
开关匹配行末的模式
也是findstr
充满怪癖,所以你已经被警告了。