ProgrammingVBS > VBSでリストからファイルを作成

2021-10-07 (木) 公開

VBSでリストからテキストファイルを自動生成する方法

やりたいこと

VBScript

以下のような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)

使い方

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」のようなファイルを自動で次々と生成していく。

フォルダー内の構成は、以下のようになっている。(画像参照)

C:\tmp\vbs_makefile\
 ├ file
 ├ list.txt
 └ makefile.vbs



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS