bir klasörün içindeki dosyaları başka bir klasöre kopyalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
bir klasörün içindeki dosyaları başka bir klasöre kopyalama
herkese kolay gelsin! bir klasörün içindeki dosyaları başka bir klasöre nasıl kopyalıyabilirim. veya bir klasörün ismini nasıl değiştirebilirim. bununla ilgili arama yaptım fakat istediğim sonucu bulamadım. yardım ederseniz sevinirim.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Usese Shellapi eklemeyi unutma.
Kullanımı:
Kod: Tümünü seç
procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, PChar(FromFolder)); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Application.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(ToFolder); //this is where the folder will go
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('File copy process cancelled')
end;
Kullanımı:
Kod: Tümünü seç
CopyFiles('Kopyalamak istediğin klasörün yolu ve adı','Kopyalamak istediğin dizin ve ad yani hedef');
Kod: Tümünü seç
CopyFiles('kaynakKlasör','hedefklasör');
Değiştirmed e aşağıdaki gibi
Kod: Tümünü seç
RenameFile('Eskiad','Yeniad')
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
sağolasın
kardeş denemeden önce birşey sormak istiyorum neden array[1..4096]. 1..128 olsa olurmu?
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
olmuyor
ilgin için sağol ama bu kod dosyaları klasör ile birlikte kopyalıyor. oysa ben sadece klasörün içindeki dosyaları kopyalamasını istiyorum.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
sağol halletttim.
sağol kardeş bana verdiğin kod işimi gördü. kaynak klasörde yol belirtirken 'C:\mysql\data\degerlendir\*.*' diye belirtmem gerekiyormuş oysa ben *.* koymamıştım. iyi çalışmalar.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Flash diskler her zaman aynı sürücü harfini alacak diye bir kural yokki.... Mesela bazen G de olabiliyor. D de J de.fox yazdı:iyi günler
paylaşım için teşekkür ederim benim bir sorum var
ben flash diskimdeki dosyaları kopyalamak istiyorum ama sürücü
CopyFiles('H:\','c:\den');
diyince dosya kaynak dosyadan okunamıyor gibi mesaj alıyorum
bu problemi nasıl gideririm
Saygılar
http://www.unreadedpost.com/index.php?s ... l=copyfile
http://www.unreadedpost.com/index.php?s ... l=copyfile
http://www.unreadedpost.com/index.php?s ... l=copyfile
Kod: Tümünü seç
uses
shellapi
function FileManager(xSourcePath, xDestPath, xPara: string): Boolean;
var
PFileMsg: TSHFileOpStruct;
mNowPath: string;
begin
Result := False;
FillChar(PFileMsg, sizeof(PFileMsg), #0);
if pos('.', xpara) = 0 then
exit;
mNowPath := GetCurrentDir;
if xSourcePath <> '' then
if not DirectoryExists(xSourcePath) then
begin
showmessage('The source path does not exist !');
exit;
end;
if xDestPath <> '' then
if not DirectoryExists(xDestPath) then
begin
showmessage('The destination path does not exist !');
exit;
end;
if SetCurrentDirectory(Pchar(xSourcePath)) then
begin
with PFileMsg do
begin
if Owner is TForm then
Wnd := TForm(Owner).Handle
else
Wnd := Application.Handle;
if xDestPath <> '' then
begin
wFunc := FO_COPY;
PTo := pChar(xDestPath);
fFlags := FOF_MULTIDESTFILES + FOF_NOCONFIRMATION;
end
else
begin
wFunc := FO_DELETE;
fFlags := FOF_ALLOWUNDO + FOF_NOCONFIRMATION;
end;
pFrom := PChar(xPara + #0#0);
end;
SHFileOperation(PFileMsg);
SetCurrentDirectory(Pchar(mNowPath));
Application.ProcessMessages;
Result := True;
end;
end;
Example:
CopyFile:
FileManager('C:Demo', 'C:Temp', '*.*');
DeleteFile: (delete C: Demo * . * )
FileManager('C:Demo', '', '*.*');
2.yol
uses
ShellAPI;
procedure TForm1.BtnCopyClick(Sender: TObject);
var
fileOp: TShFileOpStruct;
fromDir: string;
toDir: string;
begin
FillChar(fileOp, Sizeof(TShFileOpStruct), 0);
fromDir := DirectoryListBox1.Directory + '*.*'#0;
toDir := DirectoryListBox2.Directory + #0;
with fileOp do
begin
wnd := Handle;
wfunc := FO_COPY;
pFrom := PChar(fromDir);
pTo := PChar(toDir);
fFlags := FOF_ALLOWUNDO;
fAnyOperationsAborted := false;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(fileOp);
end;
arkadaslar yardımlarınız için teşekkürler
Owner diye şeyi tanımıyo
[Error] Unit1.pas(51): Undeclared identifier: 'Owner'
[Error] Unit1.pas(51): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
böyle hata veriyo
ama en üsteki kodla işi hallettim
normal klasör kopyala diyince h:\den oluyo demiştim h:\ diyince olmuyo demiştim sorunu düzelttim h:\*.* yapınca oluyo
benim bir sorum daha olacak bu flash bellek yedeklenmesi işi için var olan dosyayı kopyalıyımı diyor bu ben butona basınca böyle zırt pırt uyarı verecek bir şey istemiyorum her şeyi sorgusuz olarak kaydetmesini istiyorum bu mümkünmüdür
Owner diye şeyi tanımıyo
[Error] Unit1.pas(51): Undeclared identifier: 'Owner'
[Error] Unit1.pas(51): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
böyle hata veriyo
ama en üsteki kodla işi hallettim
normal klasör kopyala diyince h:\den oluyo demiştim h:\ diyince olmuyo demiştim sorunu düzelttim h:\*.* yapınca oluyo
benim bir sorum daha olacak bu flash bellek yedeklenmesi işi için var olan dosyayı kopyalıyımı diyor bu ben butona basınca böyle zırt pırt uyarı verecek bir şey istemiyorum her şeyi sorgusuz olarak kaydetmesini istiyorum bu mümkünmüdür
benim bi sorum daha olacak ben kendime göre şöyle bir şey yaptım
çalışıyor ama klasörün içindeki klasörü kopyalayamıyorum
bunu aşmak için aklıma faDirectory bunu çıkartıp diğerlerini kopyalayıp klasörler için klasör oluşturup onun içindekileri kopyalarım diye düşündüm ama 4 5 klasör alt altta ise bu sonsuza kadar gidecek bunu nasıl halladerim
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
dosyasay: integer;
sonuc : TSearchRec;
begin
dosyasay := FindFirst(form1.Edit1.Text+'*.*', faAnyFile - faDirectory, sonuc);
while dosyasay = 0 do
begin
memo1.Lines.Add(sonuc.name);
CopyFile(PAnsiChar(form1.edit1.Text+sonuc.name),PAnsiChar('C:\kopyalama\'+sonuc.name),TRUE);
dosyasay := FindNext(sonuc);
end;
FindClose(sonuc);
end;
bunu aşmak için aklıma faDirectory bunu çıkartıp diğerlerini kopyalayıp klasörler için klasör oluşturup onun içindekileri kopyalarım diye düşündüm ama 4 5 klasör alt altta ise bu sonsuza kadar gidecek bunu nasıl halladerim
Selam.Aşağıdaki kodlarla ne var ne yok kopyalarsın;
Uses'e ShellApi; ekleyiniz.
Kulanımı;
iyi çalışmalar.
Uses'e ShellApi; ekleyiniz.
Kod: Tümünü seç
function copydir(von,zieldir: String): boolean;
var fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do begin
wFunc := FO_COPY;
fFlags := FOF_FILESONLY;
pFrom := PChar(von+#0);
pTo := PChar(zieldir)
end;
Result:=(0=ShFileOperation(fos));
end;
function movedir(von,zieldir: String): boolean;
var fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do begin
wFunc := FO_MOVE;
fFlags := FOF_FILESONLY;
pFrom := PChar(von+#0);
pTo := PChar(zieldir)
end;
Result:=(0=ShFileOperation(fos));
end;
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;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{'c:\download' -> 'c:\'}
if copydir('c:\arsiv','c:\prgfile\') then //Arşiv'in içinde ne var ne yok kopyalanır.
begin
Form1.Caption:=('Dosyalar klasörler Kopyalandi ');
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
{'c:\download' -> 'c:\'}
if copydir('c:\prgfile\arsiv','c:\') then
begin
Form1.Caption:=('Dosyalar Klasörler Geri Yüklendi ');
end;
end;
Selam Arkadaşlar
Klasör kopyalama, taşıma ve silme için güzel bir kod. Sormak istediğim bişey var...Kopyalarken bana böyle bir klasör var üzerine yazılsınmı diye sormasını istemiyorum...Kopyala dediğim anda üzerine kopyalamasını istiyorum...Bunu nasıl yapabilirim...Yardımcı olacak arkadaşlara şimdiden teşekkür ederim...
Re: Selam Arkadaşlar
Bana bu konuda yardımcı olabilecek hiç kimse yokmusulocan yazdı:Klasör kopyalama, taşıma ve silme için güzel bir kod. Sormak istediğim bişey var...Kopyalarken bana böyle bir klasör var üzerine yazılsınmı diye sormasını istemiyorum...Kopyala dediğim anda üzerine kopyalamasını istiyorum...Bunu nasıl yapabilirim...Yardımcı olacak arkadaşlara şimdiden teşekkür ederim...
