2012年11月19日月曜日

[Script][VBS]ファイルの読み書き(FileSystemObject)

ファイルの読み書きをするサンプルです。

ファイルを開いて1行ずつ読み込み処理をする Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objInFile = objFSO.OpenTextFile("D:\sample\infile.txt")

Do While Not objInFile.AtEndOfStream
  strLine = objInFile.ReadLine

  'ここで読み込んだstrLineを使って処理を行う。

Loop

objInFile.Close
WScript.Quit

ファイルを開いて1行ずつ書き込む Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objOutFile = objFSO.CreateTextFile("D:\sample\outfile.txt")

objOutFile.WriteLine "1行目"
objOutFile.WriteLine "2行目"
objOutFile.WriteLine "3行目"

objOutFile.Close
WScript.Quit

ファイルの開き方あれこれ ' -----------------------------------------------------
' FileSystemObject
' ファイルを開く
' -----------------------------------------------------
Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")

'既存ファイルを読み込み専用で開く
Set objTargetFile = objFileSystemObject.OpenTextFile(strTargetFile)
Set objTargetFile = objFileSystemObject.OpenTextFile(strTargetFile, 1)

'既存ファイルを書き込み専用で開く(既存データは消える)
Set objTargetFile = objFileSystemObject.OpenTextFile(strTargetFile, 2)
Set objTargetFile = objFileSystemObject.CreateTextFile(strTargetFile)

'既存ファイルを追記モードで開く(既存データに追記)
Set objTargetFile = objFileSystemObject.OpenTextFile(strTargetFile, 8)

'ファイルを追記モードで開く(ファイルがなかった場合は新規作成)
Set objTargetFile = objFileSystemObject.OpenTextFile(strTargetFile, 8, True)
Set objTargetFile = objFileSystemObject.CreateTextFile(strTargetFile, True)

サブフォルダを取得 Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")

' -----------------------------------------------------
' スクリプトの格納フォルダ取得
' -----------------------------------------------------
strParentFolderPath = objFileSystemObject.GetParentFolderName(WScript.ScriptFullName)
Set objFolder = objFileSystemObject.GetFolder(strParentFolderPath)

msgbox strParentFolderPath

' -----------------------------------------------------
' サブフォルダを取得
' -----------------------------------------------------
Set objSubFolders = objFolder.SubFolders
For Each objSubFolder in objSubFolders
   msgbox objSubFolder.name
Next

ファイル / フォルダの存在確認 Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")

'ファイルが存在しない場合にはスクリプト終了
If Not objFileSystemObject.FileExists(strTargetFile) Then WScript.Quit

'ファイルオブジェクトを取得
objFile = objFileSystemObject.GetFile(strTargetFile)

'フォルダが存在しない場合にはフォルダを作成
If Not objFileSystemObject.FolderExists(strTargetFolder) Then objFileSystemObject.CreateFolder(strTargetFolder)

'フォルダオブジェクトを取得
objFolder = objFileSystemObject.GetFolder(strTargetFolder)

サブフォルダを作成する Dim objFs
Dim strPath, ComputerName

Set objFs = WScript.CreateObject("Scripting.FileSystemObject")

  '現在のフォルダの絶対パスを取得
  strPath= objFs.GetAbsolutePathName(".")
  MsgBox "現在のパスは" & vbCrLf & strPath & vbCrLf & "です"

  'ホスト名のサブフォルダを作成する
  ComputerName = GetComputerName()  'ホスト名を取得する
  MsgBox ComputerName & vbCrLf & "フォルダを作成します"

  If Right(strPath,1) <> "\" Then strPath = strPath & "\"
  strPath = strPath & ComputerName
  if objFs.FolderExists( strPath ) then objFs.DeleteFolder( strPath )
  objFs.CreateFolder( strPath )

  'ホスト名のサブフォルダを削除する
  MsgBox ComputerName & vbCrLf & "フォルダを削除します"
  objFs.DeleteFolder( strPath )

'--------------------------------------------------------------
Function GetComputerName()
'ホスト名を取得する
    Dim WSHNetwork
    Set WSHNetwork = WScript.CreateObject("WScript.Network")
    GetComputerName = WSHNetwork.ComputerName
End Function

ファイルの一覧を取得 Dim objFs
Dim objFolder, objFiles, objFile

Set objFs = WScript.CreateObject("Scripting.FileSystemObject")
'ファイルの一覧を取得
Set objFolder = objFs.GetFolder(".")
Set objFiles = objFolder.Files

'フォルダ内のすべてのファイルに対して
For Each objFile in objFiles
  '拡張子の取得
  If objFs.GetExtensionName(objFile.Name) = "txt" then
    MsgBox objFile.Name
  End If
Next


Script のページに戻る

0 件のコメント:

コメントを投稿