いまShellChangeNotifier1Changeを使ってフォルダ1にテキストファイルが書き込まれたらフォルダ2にファイルを移動させようとおもっています。
RenameFileを使用したら、ファイル名が変わってしまうので、ファイル名を替えないでテキストファイルを移動できないでしょうか?
よろしくお願いします。
コピーして削除
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0650.html
などは、如何でしょうか?
ご教授ありがとうございます。
さっそくですが、
procedure TForm1.ShellChangeNotifier1Change;
var
kekka1 : TSearchRec;
old_file1 : TFileName;
CopyFrom : String;
CopyTo : String;
TempPath : array [0..MAX_PATH] of char;
begin
old_file1 :='C:\csv\1_*';
if FindFirst(old_file1,faAnyFile,kekka1) = 0 then
begin
CopyFrom := 'C:\csv\1_*' ;
GetTempPath(SizeOf(TempPath), TempPath);
CopyTo := 'C:\index\1\1_*';
CopyFile(PChar(CopyFrom),PChar(CopyTo),False);
end;
FindClose(kekka1);
end;
このようにしてテキストファイルの最初の1_の名前のついたもののみコピー使用としましたが。コピーできません。
CopyFrom := 'C:\csv\1_*'とCopyTo := 'C:\index\1\1_*';の所で、
1_のファイル名のみをコピーするにはどうしたら良いでしょうか?
FindFirst関数、FindFirst関数を使い、
条件に合うファイルを1つ1つコピー
するのは、どうですか?
訂正です。
× FindFirst関数、FindFirst関数を使い、
○ FindFirst関数、FindNext関数を使い、
SHFileOperation でやるのはどうですか?
procedure TForm1.TntButton1Click(Sender: TObject);
var
fos: TSHFileOpStruct;
begin
with fos do
begin
wnd := Handle;
wFunc := FO_COPY;
pFrom := PChar('C:\My Documents\1*.*' + #0#0);
pTo := PChar('C:\MyDocuments\Back\' + #0);
fFlags := FOF_FILESONLY or FOF_ALLOWUNDO; // FOF_ALLOWUNDO はいらない?
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(fos);
end;
SHFileOperationとFindFirst関数、FindNext関数参考になりました。
ありがとうございます。
ツイート | ![]() |