Windows, lote. Quiero procesar archivos por lotes para el bucle. El problema es: no tengo idea de cuál será exactamente la extensión. Lo que sí sé es que será un número.
Entonces lo que estoy tratando de crear es algo como esto:
@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
)
Pero las expresiones regulares como las que puse en el bucle for no parecen funcionar en Windows.
Respuesta1
Tienes que canalizar dir
la salida del comando a findstr
, que admiteconjunto limitadode expresiones regulares. Fuente:Script por lotes para eliminar archivos según la expresión regular findtr
Lamentablemente, +
el token no es compatible, así que aquí está mi mejor opción (gracias,Scott!):
@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 le dicefindstr
que busque usando expresiones regulares/e
El interruptor coincide con el patrón al final de una línea.
También findstr
eslleno de peculiaridades, entonces estás advertido.