• 締切済み

vbsでのアスタリスクとファイル取り込み

お世話になっております。 Vbsを使用して以下のことを実施したいと思っております。 ■実施したいとこ あるフォルダの中にある「.dat」ファイル(複数あります)をテキストファイルに書き込みを行いたい。 ■例 Aフォルダの中にB.dat、c.dat、e.datとファイルがあります。 この3つのファイルをF.txtに書き込みを実施したいと思っております。 以下を使用してファイル一覧を取り込むのはみつけたのですが DIR関数がVBSでは使用できませんでした。 strDirName = Con_FolderName & "\*.dat" f_logfile = Dir(strDirName) よろしくお願いいたします。

みんなの回答

  • kikujack
  • ベストアンサー率47% (17/36)
回答No.4

遅くなりました。 nda23さん言ったとおりです。

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

以下、サンプルです。 Dim FSO, LGF Dim FLO, PTH, DAT Set FSO = CreateObject("Scripting.FileSystemObject") ' 出力ファイルを開く。上段:上書き/下段:追加書き込み Set LGF = FSO.CreateTextFile("C:\DATA\F.txt") 'Set LGF = FSO.OpenTextFile("C:\DATA\F.txt", 8, True) ' フォルダ内のファイルを取得するループ For Each FLO In FSO.GetFolder("C:\DATA").Files   ' ファイルのパス名を取得   PTH = FLO.Path   ' パス名の右4文字が".dat"なら対象とする   If Right(PTH, 4) = ".dat" Then     ' 入力ファイルを開く     Set DAT = FSO.OpenTextFile(PTH, 1)     ' EOFまでのループ     Do Until DAT.AtEndOfStream       ' 1行ずつの入出力       LGF.WriteLine DAT.ReadLine     Loop     ' 入力ファイルを閉じる     Dat.Close   End If Next ' 出力ファイルを閉じる LGF.Close

  • kikujack
  • ベストアンサー率47% (17/36)
回答No.2

VBSの場合は、下記のように Set objFS = CreateObject("Scripting.FileSystemObject") if objFS.FileExists(strDirName) then ' end if 先日のひとつ質問ですが、参考になると思います。 http://okwave.jp/qa4033499.html

niko_tama
質問者

補足

参考の質問を元に作成してみました。 動作がまだうまくとれないのですが修正する箇所など 教えていただけたら助かります。 --------------------------------------------------------------- 'フォルダ内のファイルを読み込み Set fldr = fso.GetFolder("c:data") Set l = fldr.OpenAsTextStream(8, -2) Do While l <> "" 'ログ書き込み Set logFile = fso.GetFile(FileA) 'ログファイル名 Set f = logFile.OpenAsTextStream(8, -2) 'ファイルを開き読み込み Set objFS = CreateObject("Scripting.FileSystemObject") If (objFS.FileExists(FileB)) Then Set objFile = objFS.GetFile(FileB) if objFile.Size > 0 then Set objFile = Nothing Set objText = objFS.OpenTextFile(FileB) myText = objText.ReadAll f.Write(myText & vbNewLine) f.close else End if Set objFile = Nothing End if Loop

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

VBSはVBAと微妙に違います。 http://msdn.microsoft.com/ja-jp/library/cc392489.aspx フォルダ内のファイルを取得するには二通りの方法があります。 一つはFileSystemObjectを使う方法です。 GetFolderでフォルダを取得し、この中のFilesプロパティからファイルを得ます。 http://msdn.microsoft.com/ja-jp/library/cc409798.aspx http://msdn.microsoft.com/ja-jp/library/cc428024.aspx http://msdn.microsoft.com/ja-jp/library/cc428109.aspx もう一つはShellオブジェクトからNamespaceメソッドでフォルダを 取得する方法です。 http://homepage3.nifty.com/aya_js/wsh/wsh25.htm 後者は特殊なフォルダやFTP経由のフォルダ等も取得できますが、 一般ファイルでは前者の方が普通です。 但し、ワイルドカード使って、.datのファイルだけという訳には いかないので、最後が".dat"であるものを探します。 Right関数でもよいのですが、正規表現オブジェクトを使うと、 後々、応用が利きます。 http://msdn.microsoft.com/ja-jp/library/cc392403.aspx http://msdn.microsoft.com/ja-jp/library/cc392020.aspx http://msdn.microsoft.com/ja-jp/library/cc392438.aspx

niko_tama
質問者

お礼

ご返事送れて申し訳ございません。 参考資料ありがとうございます。

関連するQ&A