Programming > VBS > VBSでリストからファイルを作成
VBSでリストからテキストファイルを自動生成する方法
以下のようなVBScriptで実現できた。
#code(vbs){{
Option Explicit
On Error Resume Next
Dim objFileSys
Dim dirTmp
Dim strReadFilePath
Dim strWriteDirPath
Dim objReadStream
Dim strLine
'作業フォルダを指定
dirTmp = "C:\tmp\vbs_makefile\"
'リストファイルのパスを指定
strReadFilePath = dirTmp & "list.txt"
'ファイルを作成するフォルダを指定
strWriteDirPath = dirTmp & "file\"
'ファイルシステムを扱うオブジェクトを作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'ファイルを読み取り専用で開き、TextStream オブジェクトを取得
Set objReadStream = objFileSys.OpenTextFile(strReadFilePath, 1)
Do Until objReadStream.AtEndOfStream = True
'1 行読み込み strLine = objReadStream.ReadLine ' ファイル名に使えない文字列のチェック Dim tempStr Dim replaceChar tempStr = strLine replaceChar = "" tempStr = Replace(tempStr, "\", replaceChar) tempStr = Replace(tempStr, "/", replaceChar) tempStr = Replace(tempStr, ":", replaceChar) tempStr = Replace(tempStr, "*", replaceChar) tempStr = Replace(tempStr, "?", replaceChar) tempStr = Replace(tempStr, """", replaceChar) tempStr = Replace(tempStr, "<", replaceChar) tempStr = Replace(tempStr, ">", replaceChar) tempStr = Replace(tempStr, "|", replaceChar) tempStr = Replace(tempStr, "[", replaceChar) tempStr = Replace(tempStr, "]", replaceChar) strLine = tempStr ' ファイルの作成 Dim FSO Dim oLog Dim makeFilePath makeFilePath = strWriteDirPath & strLine & ".txt" ' WScript.Echo makeFilePath Set FSO = CreateObject("Scripting.FileSystemObject") Set oLog = FSO.CreateTextFile( makeFilePath, True, True ) oLog.Close() Set oLog = Nothing Set FSO = Nothing
Loop
objReadStream.Close
Set objFileSys = Nothing
}}
Dimで変数を宣言する箇所をLoop内に入れており、何回も宣言しているところ。
本来は、スクリプト全体の先頭でまとめて宣言しておき、ループ内では宣言しない方が良いが、面倒なのでサンプルコードをコピペして、そのまま使った。
何度も繰り返し使う変数は、ループ内の末尾で、Set xxx = Nothing という具合で初期化しておけばOK。(後でコードを清書してもOK)
dirTmp = "C:\tmp\vbs_makefile\"のように、Cドライブの直下に作業用のフォルダーを用意しておく。
strReadFilePath = dirTmp & "list.txt"ここでは「list.txt」というファイルを用意して、その中に、ファイル名のリストをコピーしておく。
0-0-0 時間術大全
0-1-0 INTRODUCTION これが「時間オタクの」全技術だ
0-1-1 どんな状況の人でも時間を生み出せる方法
0-1-2 あなたの時間の9割は「デフォルト」で決まっている
0-1-3 「意志力」や「生産性」を上げても意味がない
0-1-4 Google×YouTube出身の「時間オタク」のメソッド
0-1-5 時間は「デザイン」できる
0-1-6 「スプリント」をしてわかった4つの教訓
0-1-7 こんなに「簡単」に切り替えられる
:
これを先頭から1行ずつ読み込んで、「0-0-0 時間術大全.txt」のようなファイルを自動で次々と生成していく。
strWriteDirPath = dirTmp & "file\"ここでは「file」というフォルダーを用意して、その中に、生成したテキストファイルを保存していく。
フォルダー内の構成は、以下のようになっている。(画像参照)
C:\tmp\vbs_makefile\ ├ file ├ list.txt └ makefile.vbs
#html{{
!--
hr>
- >
}}
#html{{
center><a href="http://px.a8.net/svt/ejp?a8mat=1O73NW+3B2PRM+D8Y+BXB8X" target="_blank"><img border="0" width="468" height="60" alt="" src="http://www21.a8.net/svt/bgt?aid=101108300200&wid=001&eno=01&mid=s00000001717002003000&mc=1"></a><img border="0" width="1" height="1" src="http://www18.a8.net/0.gif?a8mat=1O73NW+3B2PRM+D8Y+BXB8X" alt=""></center>
}}