Окна, пакетные. Я хочу обрабатывать файлы в пакетном режиме для цикла. Проблема в том, что я понятия не имею, каким именно будет расширение. Что я знаю, так это то, что это будет число.

Так что я пытаюсь создать что-то вроде этого:

@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 ответ1

0

Вы должны направить вывод команды dir в findstr , который поддерживает ограниченный набор регулярных выражений. Источник: Batch Script для удаления файлов на основе регулярного выражения 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 полон причуд, так что вы были предупреждены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .