Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2011, 11:45   #1
drinkis
 
Регистрация: 24.10.2011
Сообщений: 4
Печаль Обработать 1000 файлов txt и поместить текстовый файл в 10000 папок (как сделать?)

Здравствуйте форумчане, возможно для Вас эти задачи покажутся бональными но для меня найти на них ответ оказалось проблематично.

1) Есть 1000 файлов с расширением .txt мне нужно в каждом из файлов (.txt) найти строку содержащую текст .avi и заменить на .jpg. Как это сделать автоматизированным путем?

2) Есть 10000 папок, в каждую из них нужно добавить один и тот же файл .txt. Вопрос тот же: Как это сделать автоматизировано (программа, срипт и т.д.)

Возникшие задачи связаны с каталогизацией данных. Очень нужна Ваша помощь.

_________
Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.10.2011 в 15:34.
drinkis вне форума Ответить с цитированием
Старый 24.10.2011, 15:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1-ю задачу можно легко выполнить воспользовавшись ЛЮБОЙ программой поиска из замены в файлах. Или можно даже использовать соответствующий плагин по FAR Commander (их много, хоть тот же "Search And Replace" )
разумеется, если эта задача РАЗОВАЯ.
в противном случае лучше написать простенькую программу на любом ЯП.

2-ю задачу наверняка можно решить с помощью скрипта (да хоть те же командный файлы), но там наверняка это замудрённо...
я бы написал простую программу. на Delphi...


p.s. задачи очень простые. я такие люблю обращайтесь в личку, сделаю...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2011, 16:01   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

drinkis

1) Есть 1000 файлов с расширением .txt мне нужно в каждом из файлов (.txt) найти строку содержащую текст .avi и заменить на .jpg. Как это сделать автоматизированным путем?

если один раз - Far + плагин Search & Replace.
если нестолько - утилита sed


2) Есть 10000 папок, в каждую из них нужно добавить один и тот же файл .txt. Вопрос тот же: Как это сделать автоматизировано (программа, срипт и т.д.)

cmd-файл: команды for, copy
Rififi вне форума Ответить с цитированием
Старый 24.10.2011, 16:01   #4
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

1.
Код:
procedure FindFile(path:string);
var
i:integer;
f:TSearchRec;
sl:TStringList;
begin
sl:=TStringList.Create;
if FindFirst(path+'*.txt', faAnyFile, f)=0 then
repeat
  sl:=TStringList.Create;
  sl.LoadFromFile(path+f.Name);    
  for i:=0 to sl.Count-1 do begin
    if Pos('.avi',sl.Strings[i])<>0 then sl.Strings[i]:=StringReplace(sl.Strings[i],'.avi','.jpg',
    [rfReplaceAll,rfIgnoreCase]);
  end;
  sl.SaveToFile(path+f.Name);
until FindNext(f)<>0;
FindClose(f); 
sl.free;
end;
Примерно так. Пишу без Дельфи под рукой поэтому прошу прощения за возможные опечатки
Aiden вне форума Ответить с цитированием
Старый 24.10.2011, 16:48   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Aiden, +1
есть, правда, пара нюансов
1) Вы не проверяете, нашлось ли что-нибудь. если в каталоге нет .TXT файлов - получите exception!
2) кодировка исходного текстового файла может быть UNICODE...
3) avi в вашем примере Case sensivity (чуствительная к регистру. поэтому .AVI найдётся/не заменится.
4) если файлы лежат не в одном каталоге (в подкаталогах) - то нужно добавить рекурсивный обход...


но в целом, +1, это, по сути, именно то, что я и собирался предложить автору темы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2011, 18:12   #6
drinkis
 
Регистрация: 24.10.2011
Сообщений: 4
По умолчанию

Serge_Bliznykov, Aiden и Rififi огромнео спасибо за ответы. Честно говоря я не совсем понял что делать с

Код:
procedure FindFile(path:string);
var
i:integer;
f:TSearchRec;
sl:TStringList;
begin
sl:=TStringList.Create;
if FindFirst(path+'*.txt', faAnyFile, f)=0 then
repeat
  sl:=TStringList.Create;
  sl.LoadFromFile(path+f.Name);    
  for i:=0 to sl.Count-1 do begin
    if Pos('.avi',sl.Strings[i])<>0 then sl.Strings[i]:=StringReplace(sl.Strings[i],'.avi','.jpg',
    [rfReplaceAll,rfIgnoreCase]);
  end;
  sl.SaveToFile(path+f.Name);
until FindNext(f)<>0;
FindClose(f); 
sl.free;
end;
Прошу простить за свою не грамотность. Еще раз спасибо.
drinkis вне форума Ответить с цитированием
Старый 24.10.2011, 23:06   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Serge_Bliznykov, Aiden и Rififi огромнео спасибо за ответы. Честно говоря я не совсем понял что делать с
Жмите на кнопки

При копировании файлов по папкам выбираете сначала файл,потом корневую папку.
При замене выбираете корневую папку.
Ограничения-не выбирайте корень диска,будет ошибка
Таким способом уменьшается время поиска файлов и папок.
Интересно время обработки
Вложения
Тип файла: rar Найти и уничтожить.rar (30.4 Кб, 12 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.10.2011, 11:06   #8
drinkis
 
Регистрация: 24.10.2011
Сообщений: 4
По умолчанию doober спасибо!

doober! Программа огонь! Спасибо огромное! С меня причитается благодарность! Спасибо!
drinkis вне форума Ответить с цитированием
Старый 25.10.2011, 11:30   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я же просил сообщить время сколько тратит, на какое количество файлов.папок.
Мне важно знать
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.10.2011, 12:56   #10
drinkis
 
Регистрация: 24.10.2011
Сообщений: 4
По умолчанию

Для того что бы разложить файл по папкам 50 папок = 5 сек.
для замены строк в 1000 .txt файлов = 4 сек.
)

Последний раз редактировалось drinkis; 25.10.2011 в 17:56.
drinkis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести список файлов в текстовый файл assch Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 20.12.2010 22:36
Задан текстовый файл Input.txt (C/C++) Igos Помощь студентам 1 30.11.2010 03:16
Сохранить список файлов и папок в определённой директории в текстовый файл Az@zel Помощь студентам 5 10.03.2010 20:41
Из двух dat файлов сделать txt valdem Общие вопросы C/C++ 1 19.02.2009 19:33
Из двух dat файлов сделать txt valdem Помощь студентам 5 19.02.2009 17:21