重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

こんにちわ。takaoPRと申します。

今、指定したフォルダから指定したフォルダへのコピーをするプログラムを作成しているのですが、思う処理ができずに、困っています。
最初、FileSystemObjectのCopyFolderを使用したところ、読取専用ファイルのコピー時にエラーが出るので、
Win32APIの、「SHFileOperation」を使用しましたが、フォルダの上書きと読取専用ファイルの上書きで確認ダイアログが表示されてしまいます。
実現したい処理は、何のメッセージも出さずに(重複ファイルは勝手に上書きします)フォルダごとコピーをしたいのですが、実現する方法はないのでしょうか?
申し訳ありませんが、みなさまのお知恵をお借りできれば嬉しいです。宜しくお願い致します。

A 回答 (6件)

>せっかくご回答下さったのに申し訳ありませんが、>FOF_NOCONFIRMATIONを指定した場合でも、フォルダの上書きと読み取り専用ファイルの上書き時には確認のダイアログが表示されてしまうようです。




OSはなんでしょう?

WinXP Pro SP1で確認したところ、以下のソースでメッセージは出ませんでした。

SHFILEOPSTRUCTstSFO = { 0 };
stSFO.hwnd = hWnd;
stSFO.wFunc = FO_COPY;
stSFO.pFrom = "c:\\test1\\*.*\0";
stSFO.pTo = "c:\\test2\0";
stSFO.fFlags = FOF_NOCONFIRMATION;

int iRet = SHFileOperation(&stSFO);
    • good
    • 0
この回答へのお礼

サンプルまで載せて下さってありがとうございます。
無事解決致しました。

原因は、
Public Const FOF_NOCONFIRMATION = &H10&
が宣言されてなかったからのようです。
「.Flags = &H10&」 と指定したら上手くいきました。
ありがとうございました。

お礼日時:2003/07/22 09:24

よくみたら#3とかぶったみたい。


OKWeb経由じゃなく、Goo経由で見ているから、気が付かなかった。

失礼したm(_ _)m
    • good
    • 0
この回答へのお礼

わざわざのアドバイスありがとうございます。
ご迷惑をお掛けしました。
無事解決致しました。

原因は、
Public Const FOF_NOCONFIRMATION = &H10&
が宣言されてなかったからのようです。
&H10& と指定したら上手くいきました。
ありがとうございました。

お礼日時:2003/07/22 09:23

>FOF_NOCONFIRMATIONを指定した場合でも・・・ようです。



そう?

この方法で、読取専用ファイルに上書きしたことがあるよ

当時の環境
Win2K
VB6SP3

CDからHDへのまるまる上書きコピー
結果から言うと、読取専用の上書きコピーをするのといっしょ

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=423672
    • good
    • 0
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
せっかくご回答下さったのに申し訳ありませんが、FOF_NOCONFIRMATIONを指定した場合でも、フォルダの上書きと読み取り専用ファイルの上書き時には確認のダイアログが表示されてしまうようです。
やはり、予め削除するのが良いのでしょうか・・・。

お礼日時:2003/07/19 13:42

APIのファイルコピーではダメなんですか?



 フォルダーの中身をすべて列挙して、コピーを行うというやり方です。

 これだと、エラーメッセージは、一切出てきませんよ。

 私はいつも、これを使っています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
APIのファイルコピーとは、「FileCopy source, destination」のことでしょうか?
確かにこれでしたら、メッセージは一切表示されないのですが、この場合、フォルダは何階層あるかが不明なため、全てのフォルダ内のファイルという記述が分からずに断念してしまいました。
よろしければ、フォルダ内のすべてのファイル、フォルダを調べる事のできるサンプルかなにかありませんでしょうか?勝手ばかり言って本当にもうしわけありません。

お礼日時:2003/07/19 13:53

わかりませんが、コピー先のファイルをあらかじめ削除もしくは、属性変更しておくというのはいかがでしょうか。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
予め削除も考えたのですが、その確認の仕方が非常に複雑になりそうですし、上書きファイル意外は削除できないため、フォルダの削除時に不具合が出そうなので、他の方法を探しています。
もし、何か良い方法があればご教授お願いします。
ありがとうございました。

お礼日時:2003/07/19 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!