Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
1

Работа с файлами. Как сканировать папку и переносить от туда лишнее в другую папку

11.05.2012, 13:18. Показов 3598. Ответов 5
Метки нет (Все метки)

Хочу написать программу со следующим функционалом:
Имеется директория, по пути C:\MyFolder. В этой папке лежат следующие директории: Отчеты, Работа, Смета, Планирование, Хронос, Контроль Red Line, Контроль Green Line, Не мое.
Как сделать процедуру, которая будет сканировать C:\MyFolder и все лишние папки и файлы (с другими именами) перенести в папку Не мое?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 13:18
Ответы с готовыми решениями:

Как скопировать папку с файлами в другую папку с заменой средствами php?
Как скопировать папку с файлами в другую папку с заменой средствами php? Из...

Как найти папку javax, чтобы вставить туда папку servlet?
Друзья! То есть ситуация такая: package pak.example; import javax.servlet.http.HttpServlet;...

Webbrowser перенос кэша в другую папку и загрузка от туда
Нужна помощь помогите, как можно реализовать так, чтобы кэш грузился в "свою" нужную мне директорию...

Как скопировать папку с файлами в нужную папку?
Есть флешка, есть некая папка на флешке допустим D:/1 как скопировать всю папку с файлами и...

5
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
11.05.2012, 14:22 2
Поскольку я понимаю должно работать, сам не пробовал:
Я привёл литературу, если что-то не получится, попробуйте разобраться сами.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
uses ShellApi
 
var
SearchRec:TSearchRec;//переменная для занесения результатов поиска
CF:TSHFileOpStruct;//для копирования папки
flag:boolean;
name: array [1..7] of string; //в этот массив предварительно занесите имена ваших папок
 
 
if findfirst('C:\MyFolder\*.*',faAnyFile,SearchRec)=0 then //если найден любой файл или папка
repeat
if (SearchRec.name<>'.') and (SearchRec.name<>'..') then begin
//сравниваете название файла или папки с необходимыми вам названиями
flag:=false;
for i:=1 to 7 do
  if SearchRec.name=name[i] then flag:=true;
 
if flag=true then
begin
//выполняете копирование
 
if DirectoryExists('C:\MyFolder\'+SearchRec.name) then//если это папка
begin
 CF.Wnd:=0;
 CF.pFrom:='C:\MyFolder';//откуда копируем файлы для вас будет ваша папка
 CF.pTo:='C:\не моё';//куда копируем если такого каталога нет то будет предложено его создать
 CF.wFunc:=FO_COPY;//задаём флаг копирования
 CF.fFlags:=FOF_ALLOWUNDO;//пусть будет этот флаг
 if ShFileOperation(CF) = 0 then showmessage('Скопировано');
DelDir('C:\MyFolder\'+SearchRec.name);//удаление папки
end;
 
if fileexist('C:\MyFolder\'+SearchRec.name) then//если это файл
begin
copyfile('C:\MyFolder\'+SearchRec.name, 'C:\не моё\'+SearchRec.name)
DeleteFile('C:\MyFolder\'+SearchRec.name);
end;
end; 
end;
until findnext<>0; //выполнять пока не будут найдены файлы
findclose(SearchRec);//очистка памяти

функции и процедуры:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function DelDir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc  := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom  := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure copyfile(fromfilename, tofilename : string);
var fromfile, tofile: file;
begin
 assignfile(fromfile, fromfilename);
 assignfile(tofile, tofilename);
 reset(fromfile);
 try
 rewrite(tofile);
 try
if lzcopy(tfilerec(fromfile).handle, tfilerec(tofile).handle)<0 then raise exception.create('error using lzcopy')
 finally
 closefile(tofile);
end;
 finally
 closefile(fromfile);
end;
end;
 //Копирование методами windows:
 //uses shellapi; // !!! важно


второе

четвёртое
1
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
11.05.2012, 14:54  [ТС] 3
Delphi
1
name: array [1..7] of string; //в этот массив предварительно занесите имена ваших папок
Как сюда прописать имена папок?
0
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
11.05.2012, 15:42 4
name[1]:='имя1';
name[2]:='имя 2';
и т.д.
1
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
11.05.2012, 17:59  [ТС] 5
Я пока-что не совсем шарю. Можете подсказать, куда
name[1]:='имя1';
name[2]:='имя 2';
Вставлять, выше массива или ниже и name:string; в разделе var прописать или я не то понял?
0
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
13.05.2012, 12:27 6
в разделе var пишешь name: array [1..7] of string;
А при запуске программы уже делаешь запись в массив. (при создании формы например в процедуре FormCreat)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2012, 12:27

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как скопировать папку (с подпапками и файлами) из одной директории в другую?
нужно скопировать папку ( с подпапками и файлами) из одной директории в другую. Пути (от куда и...

Выбрать случайную папку, скопировать из неё все файлы и перенести в другую папку
Добрый день! Прошу помощи в написании батника. Имеется папка A с неким количеством других папок....

Выбрать случайную папку, скопировать из неё все файлы и перенести в другую папку
Добрый день! Прошу помощи в написании скрипта. Имеется папка A с неким количеством других папок....

Cкопировать на съемный диск, в указанную пользователем папку, папку с файлами
Необходимо скопировать на съемный диск, в указанную пользователем папку, папку с файлами, имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.