dポイントプレゼントキャンペーン実施中!

お世話になっております。
Vbsを使用して以下のことを実施したいと思っております。

■実施したいとこ
あるフォルダの中にある「.dat」ファイル(複数あります)をテキストファイルに書き込みを行いたい。

■例
Aフォルダの中にB.dat、c.dat、e.datとファイルがあります。
この3つのファイルをF.txtに書き込みを実施したいと思っております。

以下を使用してファイル一覧を取り込むのはみつけたのですが
DIR関数がVBSでは使用できませんでした。

strDirName = Con_FolderName & "\*.dat"
f_logfile = Dir(strDirName)

よろしくお願いいたします。

A 回答 (4件)

遅くなりました。


nda23さん言ったとおりです。
    • good
    • 0

以下、サンプルです。



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
    • good
    • 1

VBSの場合は、下記のように



Set objFS = CreateObject("Scripting.FileSystemObject")
if objFS.FileExists(strDirName) then
'
end if

先日のひとつ質問ですが、参考になると思います。
http://okwave.jp/qa4033499.html

この回答への補足

参考の質問を元に作成してみました。
動作がまだうまくとれないのですが修正する箇所など
教えていただけたら助かります。
---------------------------------------------------------------
'フォルダ内のファイルを読み込み
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

補足日時:2008/05/21 19:48
    • good
    • 0

VBSはVBAと微妙に違います。


http://msdn.microsoft.com/ja-jp/library/cc392489 …

フォルダ内のファイルを取得するには二通りの方法があります。
一つはFileSystemObjectを使う方法です。
GetFolderでフォルダを取得し、この中のFilesプロパティからファイルを得ます。
http://msdn.microsoft.com/ja-jp/library/cc409798 …
http://msdn.microsoft.com/ja-jp/library/cc428024 …
http://msdn.microsoft.com/ja-jp/library/cc428109 …

もう一つはShellオブジェクトからNamespaceメソッドでフォルダを
取得する方法です。
http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

後者は特殊なフォルダやFTP経由のフォルダ等も取得できますが、
一般ファイルでは前者の方が普通です。

但し、ワイルドカード使って、.datのファイルだけという訳には
いかないので、最後が".dat"であるものを探します。

Right関数でもよいのですが、正規表現オブジェクトを使うと、
後々、応用が利きます。
http://msdn.microsoft.com/ja-jp/library/cc392403 …
http://msdn.microsoft.com/ja-jp/library/cc392020 …
http://msdn.microsoft.com/ja-jp/library/cc392438 …
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/05/21 19:48

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A