Пакет: как запустить программу для всех файлов в папке и как создать выходной файл для результата, используя оригинальное имя файла?
Я новичок в пакетном программировании, так что извините за простой вопрос.
У меня есть папка с именем 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=
возможность сохранить имена файлов, даже если они содержат пробелы.
изменить: параметры должны быть помещены перед переменной цикла.