VBSでリストからファイルを作成
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Programming]] > [[VBS]] > VBSでリストからファイルを作成
RIGHT:2021-10-07 (木) 公開
//RIGHT:2020-05-18 (月) 更新
//----- ----- ----- ----- ----- ----- ----- -----
VBSでリストからテキストファイルを自動生成する方法
//----- ----- ----- ----- ----- ----- ----- -----
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
#contents
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* やりたいこと [#wants]
- 本の目次データから、対応する内容のテキストファイルを自...
- VBSでファイルを読み込み、1行ずつ文字列を読み取って、そ...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* VBScript [#code]
以下のような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(strReadFileP...
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
}}
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
** 問題点 [#problem]
Dimで変数を宣言する箇所をLoop内に入れており、何回も宣言し...
本来は、スクリプト全体の先頭でまとめて宣言しておき、ルー...
何度も繰り返し使う変数は、ループ内の末尾で、Set xxx = Not...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* 使い方 [#usage]
- 作業フォルダを指定
dirTmp = "C:\tmp\vbs_makefile\"
のように、Cドライブの直下に作業用のフォルダーを用意してお...
- リストファイルのパスを指定
strReadFilePath = dirTmp & "list.txt"
ここでは「list.txt」というファイルを用意して、その中に、...
~
(例)「時間術大全」という本の目次データをコピペしておく。
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
}}
~
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」というフォルダーを用意して、その中に、生...
** フォルダー内の構成 [#fb0cea7a]
フォルダー内の構成は、以下のようになっている。(画像参照)
C:\tmp\vbs_makefile\
├ file
├ list.txt
└ makefile.vbs
&ref(vbs_makefile_1.png);
「makefile.vbs」をダブルクリックすると、「file」フォルダ―...
(例)以下のように、目次の項目名をファイル名とするテキス...
&ref(vbs_makefile_2.png);
- 改行マークは、ファイル名が空の「.txt」として生成されて...
- 区切り記号として複数書き込んでいた「-------------------...
このようにゴミファイルもいくつか生成されてしまうので、最...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* 参考情報 [#confer]
** (1) ファイルの読み込み [#x5e4f40d]
- VBScript - ファイルを1行ずつ読み込んで処理する : Server...
https://www.server-world.info/query?os=Other&p=vbs&f=4
- ファイルの内容を1行ずつ読み込む方法[VBScript] : バヤシタ
https://bayashita.com/p/entry/show/85
- VBScript Tips (Tips0072)
http://www.whitire.com/vbs/tips0072.html
** (2) ファイル名に使えない文字列のチェック [#v230edd2]
- ファイル名に使用できない文字列が含まれていないか調べる ...
https://dobon.net/vb/dotnet/file/invalidpathchars.html
- Excel VBA でファイル名に使えない文字を取り除く・チェッ...
http://tanaka-misaki.blogspot.com/2012/02/excel-vba.html
** (3) ファイルの作成 [#gf2186e1]
- VBS(VBScript)によるファイルを作成する方法を紹介
https://www.wannko.net/vbs/file/filemake.html
- 全ては時の中に… : 【VBS】テキストファイルを作成する
http://blog.livedoor.jp/akf0/archives/51371234.html
#html{{
<!--
<hr>
-->
}}
//----------------------------------------
// A8 Ads - sakura VPS banner
~
#html{{
<center><a href="http://px.a8.net/svt/ejp?a8mat=1O73NW+3B...
}}
//----------------------------------------
終了行:
[[Programming]] > [[VBS]] > VBSでリストからファイルを作成
RIGHT:2021-10-07 (木) 公開
//RIGHT:2020-05-18 (月) 更新
//----- ----- ----- ----- ----- ----- ----- -----
VBSでリストからテキストファイルを自動生成する方法
//----- ----- ----- ----- ----- ----- ----- -----
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
#contents
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* やりたいこと [#wants]
- 本の目次データから、対応する内容のテキストファイルを自...
- VBSでファイルを読み込み、1行ずつ文字列を読み取って、そ...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* VBScript [#code]
以下のような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(strReadFileP...
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
}}
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
** 問題点 [#problem]
Dimで変数を宣言する箇所をLoop内に入れており、何回も宣言し...
本来は、スクリプト全体の先頭でまとめて宣言しておき、ルー...
何度も繰り返し使う変数は、ループ内の末尾で、Set xxx = Not...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* 使い方 [#usage]
- 作業フォルダを指定
dirTmp = "C:\tmp\vbs_makefile\"
のように、Cドライブの直下に作業用のフォルダーを用意してお...
- リストファイルのパスを指定
strReadFilePath = dirTmp & "list.txt"
ここでは「list.txt」というファイルを用意して、その中に、...
~
(例)「時間術大全」という本の目次データをコピペしておく。
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
}}
~
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」というフォルダーを用意して、その中に、生...
** フォルダー内の構成 [#fb0cea7a]
フォルダー内の構成は、以下のようになっている。(画像参照)
C:\tmp\vbs_makefile\
├ file
├ list.txt
└ makefile.vbs
&ref(vbs_makefile_1.png);
「makefile.vbs」をダブルクリックすると、「file」フォルダ―...
(例)以下のように、目次の項目名をファイル名とするテキス...
&ref(vbs_makefile_2.png);
- 改行マークは、ファイル名が空の「.txt」として生成されて...
- 区切り記号として複数書き込んでいた「-------------------...
このようにゴミファイルもいくつか生成されてしまうので、最...
//===== ===== ===== ===== ===== ===== ===== ===== ===== =...
* 参考情報 [#confer]
** (1) ファイルの読み込み [#x5e4f40d]
- VBScript - ファイルを1行ずつ読み込んで処理する : Server...
https://www.server-world.info/query?os=Other&p=vbs&f=4
- ファイルの内容を1行ずつ読み込む方法[VBScript] : バヤシタ
https://bayashita.com/p/entry/show/85
- VBScript Tips (Tips0072)
http://www.whitire.com/vbs/tips0072.html
** (2) ファイル名に使えない文字列のチェック [#v230edd2]
- ファイル名に使用できない文字列が含まれていないか調べる ...
https://dobon.net/vb/dotnet/file/invalidpathchars.html
- Excel VBA でファイル名に使えない文字を取り除く・チェッ...
http://tanaka-misaki.blogspot.com/2012/02/excel-vba.html
** (3) ファイルの作成 [#gf2186e1]
- VBS(VBScript)によるファイルを作成する方法を紹介
https://www.wannko.net/vbs/file/filemake.html
- 全ては時の中に… : 【VBS】テキストファイルを作成する
http://blog.livedoor.jp/akf0/archives/51371234.html
#html{{
<!--
<hr>
-->
}}
//----------------------------------------
// A8 Ads - sakura VPS banner
~
#html{{
<center><a href="http://px.a8.net/svt/ejp?a8mat=1O73NW+3B...
}}
//----------------------------------------
ページ名: