フォルダーをコピーするプログラムについて


C2  2007-11-30 03:23:24  No: 138237

VB初心者です。
VBで以下のプログラムができないか悩んでいます。
・APPコンフィグでフォルダーA→フォルダーBへコピーさせる。
・コピーの対象は1日前に作られてる物。
開発環境はVisual Studio 2005です。
アドバイスの方よろしくお願いします。


まずは  2007-11-30 09:11:44  No: 138238

APPコンフィグ  って何ですか?


C2  2007-11-30 20:13:11  No: 138239

Windowsアプリケーションのソリューションの新しい項目の追加で『アプリケーション構成ファイル』をクリックして頂くと『app.config』が出てくると思います。
ご教授よろしくお願いします。


魔界の仮面弁士  2007-11-30 20:33:57  No: 138240

> 『app.config』が出てくると
……確認されているのは、そういう意味では無いような。

app.config って、起動時のアプリ設定を管理する XML ファイルですよね。
その設定ファイルと、
>> ・APPコンフィグでフォルダーA→フォルダーBへコピーさせる。
の繋がりが読み取れない、という意味だと思いますよ。

その設定ファイルを用いて、AからBに『何を』コピーさせたいのでしょう?
また、コピーという行為と、app.config との関係は何ですか?


特攻隊長まるるう  2007-11-30 20:37:35  No: 138241

>・APPコンフィグで
の意味が分かりません。フォルダのコピーと関係ないですよね?

>・コピーの対象は1日前に作られてる物。
フォルダの作成日付?調べてコピーすればいいだけでは?

何を調べてどこが分からなくてどう考えているかを具体的に
説明してください。


C2  2007-11-30 21:40:06  No: 138242

説明不足で申し訳ありません。
例えばマイドキュメントのAというフォルダーの中にファイルを保存した時、ファイルの作成日時が1日前だった時、又は保存した時は1日前ではなかったがファイル作成から1日経った時にBというフォルダーにファイルをコピーする、というのをしたいのです。
ファイルの種類は特に問わないので全共通でも構いません。
app.configの設定を変えるだけでできるそうなのですがご教授よろしくお願いします。


特攻隊長まるるう  2007-11-30 22:10:54  No: 138243

app.configに関連が無いと説明しているにもかかわらず、
>app.configの設定を変えるだけでできるそうなのですが
これでは説明になっていません。『設定』って何ですか?
どこから得た情報ですか?その情報は正しいのですか?

コピーするプログラムに関しても何も調べてないし、
何も作っていないように感じます。調べて、作って、
問題となっている部分を具体的に書いてください。


C2  2007-12-04 05:14:45  No: 138244

>特攻隊長まるるうさん

app.congigのソースにフォルダーのどこからどこまでと指定してあげればプログラムを作ることなくコピーできると話を聞いてますので確かな情報です。
当方はわからないのでこちらで質問してる訳なので。

只今Formからコピープログラムを作ってるのですがフォルダー作成日から1日前以降のコピーで悩んでます。
作成日から1日前以降の日時の取得したいのですがいい方法が浮かびません。
申し訳ありませんがご教授よろしくお願いします。

Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Button1.Click
        'フォルダ(ディレクトリ)内のファイルを全てコピーする
        Dim src As String = "C:\Documents and Settings\Administrator\My Documents\A\"    'コピー元フォルダ
        Dim des As String = "C:\Documents and Settings\Administrator\My Documents\B\"    'コピー先フォルダ
        Dim di As New System.IO.DirectoryInfo(src)
        For Each fi As System.IO.FileInfo In di.GetFiles()
            fi.CopyTo(des & fi.Name, True)     '上書き指定でコピー
        Next
    End Sub


lol  2007-12-04 07:15:52  No: 138245

>>app.congigのソースにフォルダーのどこからどこまでと指定してあげればプログラムを作ることなくコピーできると話を聞いてますので確かな情報です。

意味がわからん。
頼むから日本語で話してくれ。

「app.congigのソースにフォルダーのどこからどこまでと指定してあげればプログラムを作ることなくコピーできる」の根拠を示してくれよ。
なんかソースがあるなら提示してくれ。

>当方はわからないのでこちらで質問してる訳なので。
当方はアナタの言葉が理解不能なため答えようがない訳なので。

まぁとりあえずこの辺読んどきゃ幸せになれるかもね。
http://msdn2.microsoft.com/ja-jp/library/tbhxe65b.aspx


特攻隊長まるるう  2007-12-04 20:35:00  No: 138246

>app.congigのソースにフォルダーのどこからどこまでと
>指定してあげればプログラムを作ることなく
>コピーできると話を聞いてますので確かな情報です。
>当方はわからないのでこちらで質問してる訳なので。

認識の違いなんですが、C2 さんは2つの質問をまとめてしています。
1つは、設定ファイル(app.config)からAフォルダ、Bフォルダのパスを取得する方法。
2つ目は、指定したフォルダの中で1日前に作られてるファイルをコピーする方法。
この2つは全く別の技術ですので、お互いに関係ない(独立した)内容と言えます。
それを組み合わせた時に希望のプログラムが作成できるというだけですね?。

>・APPコンフィグでフォルダーA→フォルダーBへコピーさせる。
APPコンフィグがコピーを実行しているわけではありませんよね?
それは、サンプルコードを書いたから分かりますよね?
フォルダA・フォルダBは文字列で指定して、そのフォルダ内で1日前に作られてる
ファイルをコピーする方法が分かればいいのでしょう?

このサンプルコードに限れば、フォルダのパスを設定ファイルから取ろうが
プログラム内で固定で持っていようが、関係ありません。それを最初の質問から
主語と述語を取れば
>・APPコンフィグでコピーさせる。
というようなAPPコンフィグにコピー機能があるような表現は、間違った
表現です。

>コピーできると話を聞いてますので確かな情報です。
それならば、話を聞いた人に続けて質問してください。
ここで質問を続けるなら、APPコンフィグに関しては別の(関係ない)質問と
いう理解をしてください。


もげ  2007-12-04 20:59:44  No: 138247

'「ご教授」じゃなくて「ご教示」

>app.congigのソースにフォルダーのどこからどこまでと指定してあげればプログラムを作ることなくコピーできると話を聞いてますので確かな情報です。

'「釣り」でないとすれば、
ガセネタをつかまされたか、貴殿の都合のように曲解したかだとは思いますが、

コピーするプログラムは書いている途中のようですし、
ようするに、App.Config云々は、
>Dim src As String = "C:\Documents and Settings\Administrator\My 
Documents\A\"    'コピー元フォルダ
>Dim des As String = "C:\Documents and Settings\Administrator\My Documents\B\"    'コピー先フォルダ
を設定ファイルへ保持して、
再ビルドしなくても変更可能なようにしたいってことですよね?

VB2005の場合は、
http://homepage1.nifty.com/rucio/main/dotnet/technique/teq1_Setting.htm
でよいかと。
でもって、
http://dobon.net/vb/dotnet/file/synchronizedirectory.html
を応用すれば目的は達せられるかと思いますが如何でしょう?


C2  2007-12-05 21:30:53  No: 138248

>特攻隊長まるるうさん  もげさん
ご指摘、ご指導ありがとうございます。
まだ初心者で全然わかってないので。。。
失礼しました。

コピープログラムありがとうございました。
現在コピーではなくフォルダー内のファイルの移行でやってるのですが、移行の条件のフォルダ内で1日前に作られてるファイルを移行する方法でつまづいてます。
フォルダー内の全ファイルを取得する所までできたのですが、移行条件とどうやって結びつけたらいいかで悩んでます。
あと変数srcをフォルダーAの中身としたいのですがこの書き方だとAというファイルを探す文になってしまうのでファイルが存在しないとなってしまいます。
何かいい方法はあるのでしょうか?

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim src As String = "C:\Documents and Settings\Administrator\デスクトップ\A\"    '移行元フォルダ
        Dim des As String = "C:\Documents and Settings\Administrator\デスクトップ\B\"    '移行先フォルダ
        Dim D As New System.IO.DirectoryInfo(src)
        Dim CTime As Date

        For Each strPath As String In System.IO.Directory.GetFiles("C:\Documents and Settings\Administrator\デスクトップ\A", "*")
        Next strPath

        CTime = System.IO.File.GetCreationTime("C:\Documents and Settings\Administrator\デスクトップ\A")

        If Not CTime = DateAdd(DateInterval.Day, -1, CDate(Now)) Then
            If Not CTime = Today Then
                    IO.File.Move(src,des)     'フォルダー先へ移行

            End If
        End If
    End Sub
End Class


特攻隊長まるるう  2007-12-05 21:46:01  No: 138249

>コピープログラムありがとうございました。
>〜
>何かいい方法はあるのでしょうか?
リンク先のコードに全て答えが書いてあるように思うのですが、
読まないのならアドバイスしても意味ないですよね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加