- 締切済み
現在、VBSを勉強中なのですがなかなか上手くできません。
現在、VBSを勉強中なのですがなかなか上手くできません。 やりたいことはAフォルダとBフォルダがあり、フォルダの中のファイルをファイル名+拡張子で判断して、同じファイルがないか調べる。 同じファイルがある場合は、ポップアップでしらせる。複数ある場合もすべてしらせる。 同じファイルがない場合はAフォルダのファイルをBファイル内にコピーして何も表示もなしで処理終了。 そんなプログラムを創りたいのですがネットなどで調べてるのですが、わかりません。出来ないんでしょうか? 参考にできそうなURLあったら教えていただけないでしょうか。 また、サンプルプログラムもつくっていただけたら嬉しいです。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mogeraccho
- ベストアンサー率42% (3/7)
はじめたばかりだと、しんどいでしょうがそのうち慣れると思いますよ。 >やりたいことはAフォルダとBフォルダがあり、フォルダの中のファイルをファイル名+拡張子で判断して、同じファイルがないか調べる。 ファイル名を取得していって、一致不一致を調べる。 FindFirstFileとか言う関数がありますが、正直よくわからないので、リストボックスの裏技を使ってみます。 あ、最初に断っておきますが、当方VBは使ったことないので。 BASIC言語としてのサンプルです。 では準備。 RADでボタンを2つとリストボックス2つとエディットボックス2つを用意します。 ボタン1が押されたら、エディットボックス1・2からファイルパスを取得し、リストボックス1・2にそのディレクトリーの中身一覧を表示させます。 Dim buffer[1] As BytePtr Dim Length[1] As Long Length[0]=GetWindowTextLength(GetDlgItem(hMainWnd,EditBox1)) Length[1]=GetWindowTextLength(GetDlgItem(hMainWnd,EditBox2)) buffer[0]=malloc(Length[0]+1) buffer[1]=malloc(Length[1]+1) GetDlgItemText(hMainWnd,EditBox1,buffer[0],Length[0]+1) GetDlgItemText(hMainWnd,EditBox2,buffer[1],Length[1]+1) SendMessage(GetDlgItem(hMainWnd,ListBox1),LB_DIR,DDL_READWRITE,MakeStr(buffer[0])+"*") SendMessage(GetDlgItem(hMainWnd,ListBox2),LB_DIR,DDL_READWRITE,MakeStr(buffer[1])+"*") free(buffer[0]) free(buffer[1]) コマンドボタン2でリストをチェックしていきます。 Dim LB1 As Long Dim LB2 As Long Dim n As Long Dim m As Long Dim LB1_byte As Long Dim LB2_byte As Long Dim LB1_text As BytePtr Dim LB2_text As BytePtr LB1=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETCOUNT,0,0) LB2=SendDlgItemMessage(hMainWnd,ListBox2,LB_GETCOUNT,0,0) For n=0 to LB1-1 LB1_byte=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXTLEN,n,0) LB1_text=malloc(LB1_byte+1) SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXT,n,LB1_text) For m=0 to LB2-1 LB2_byte=SendDlgItemMessage(hMainWnd,ListBox2,LB_GETTEXTLEN,m,0) LB2_text=malloc(LB1_byte+1) SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXT,m,LB2_text) If MakeStr(LB1_text)=MakeStr(LB2_text) Then MessageBox(hMainWnd,"重複を発見しました。","DISCOVER",MB_OK) Else MessageBox(hMainWnd,"重複じゃないファイルです→"+MakeStr(LB1_text),"UN-DISCOVER",MB_OK) End If Next Sleep(50) Next free(LB1_text) free(LB2_text) MessageBox(hMainWnd,"作業が終了しましたとさ","FINISH",MB_OK) こんな感じでしょうか? 理解できなければ・・・ まあ、No1さんとまでは行きませんが、参考書を買うことをお勧めします。 あ、それと当方、独学ですので、汚い部分も多々ありますがお許しくださいな。
- 0909union
- ベストアンサー率39% (325/818)
>やりたいことはAフォルダとBフォルダがあり、・・中略・・ アップでしらせる。複数ある場合もすべてしらせる これは全て基本的なことです。マニュアルやリファレンスを見れば分かる範囲です。 >ネットなどで調べてるのですが、わかりません。出来ないんでしょうか? そうであれば、あなたには無理です。あきらめてください。プログラミングには向いていません。 あえて言うなら、町の学校に言ってください。いまなら、短期集中型で専門学校や、IT派遣会社で講習をしています。失業中の方なら、10万円もらえて、勉強できますよ。ハローワークで調べてください。だいだい2、3ヶ月で5~10万円支払うと習うことができます。 まあ、とりあえず本家のリファレンスサイトを掲げて起きますが、これを見て作成できないようであれば、前述の事をしないと、まず300%無理です(自学習で習得できるほど能力がない)。 http://msdn.microsoft.com/ja-jp/library/cc392483.aspx