Пакет: как запустить программу для всех файлов в папке и как создать выходной файл для результата, используя оригинальное имя файла?

Я новичок в пакетном программировании, так что извините за простой вопрос.

У меня есть папка с именем FSC в C: \ TTG \ FSC, с тысячами и тысячами текстовых файлов, называемых 1_A.txt 2_A.txt и т. Д. Я хотел бы запустить программу и получить ее вывод в другом файле, переименовывая исходный (например, 1_A.txt будет иметь выходной файл с именем 1_A_out.txt). Я уже проверял, чтобы запустить программу на 1 файл, и он работает (просто писать в командной строке tag-french filename).

Итак, как я могу создать цикл for для анализа каждого файла в папке и создания выходных файлов?

Я пробовал это, но это не работает

for /F %%i in ('dir /b "c:\treetagger\FSCB1\"') do
tag-french %%i > %%i_out

Я могу сделать это в Ubuntu, написав это:

for l in /home/sp/Desktop/FSCM5/*
do
  echo $l
  filename=$(basename "$l")
  extension="${filename##*.}"
  filename="${filename%.*}"
  filename=($(echo "/home/sp/Desktop/FSCM5TTG/"$filename"_"ttg"_."$extension))
  echo $filename
  sh /home/sp/Desktop/TTG/cmd/tree-tagger-french $l > $filename
done

Но я хотел бы узнать, как это сделать в Windows тоже

1 ответ

Я проверил это с успехом:

for /F "delims=" %%i in ('dir /b "c:\treetagger\FSCB1\*.*"') do tag-french "%%i" > "%%i_out"

Я должен был использовать delims= возможность сохранить имена файлов, даже если они содержат пробелы.
изменить: параметры должны быть помещены перед переменной цикла.

Другие вопросы по тегам