Windows, пакет. Я хочу обрабатывать файлы пакетом для цикла. Проблема в следующем: я понятия не имею, какое именно расширение будет. Я знаю, что это будет число.
Итак, я пытаюсь создать что-то вроде этого:
@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
swicth говоритfindstr
искать с помощью регулярных выражений/e
переключатель соответствует шаблону в конце строки
Также findstr
являетсяполный причуд, так что вы предупреждены.