トッカンソフトウェア

WSH フォルダ内のテキストを一斉編集

WSHを利用したサンプルです。フォルダ内のテキストファイルを一斉編集します。
実際に編集したい処理に変更して下さい。


				
Dim fromDir
Dim toDir
Dim charset

'文字コード
charset = "Shift_JIS"
'charset = "UTF-8"

'フォルダ指定
fromDir = "C:\work\wsh"
toDir = "C:\work\wsh2"

Function edit(ary)
	For Each str In ary

		'***** ここをやりたいことに合わせて変更する *****
		writData "-" + str + "-"
	Next
End Function

'------------------------ 以下は変更しない ------------------------

Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim objBaseDir
Set objBaseDir = objFSO.getFolder(fromDir)

Dim objADS
Set objADS = WScript.CreateObject("ADODB.Stream")

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")

Dim objFile
Dim fileData

Dim writeAry()
Dim writeAryReDim

'テキストを指定( 1 はバイナリ)  
objADS.type = 2

'文字コードを指定
objADS.Charset = charset

'出力データ格納
Sub writData(str)
	If writeAryReDim Then
		ReDim Preserve writeAry(UBound(writeAry) + 1)
	Else
		writeAryReDim = true
	End If
	writeAry(UBound(writeAry)) = "-" + str + "-"
End Sub

'ファイル一覧
for each objFile in objBaseDir.files

	fileData = readFile(fromDir + "\" + objFile.name)
	writeAryReDim = false
	ReDim writeAry(0)
	edit(fileData)
	writeFile toDir + "\" + objFile.name, writeAry
next 

'実行フォルダを表示
objShell.Run toDir

Function readFile(file)
	Dim ary()
	ReDim ary(0)
	Dim isReDim
	'Stream オブジェクトを開く
	objADS.Open
	
	'ファイルを開く
	objADS.LoadFromFile (file)
	
	isReDim = false
	Do While Not objADS.EOS

		'1行毎の処理
		If isReDim Then
			ReDim Preserve ary(UBound(ary) + 1)
		Else
			isReDim = true
		End If
		ary(UBound(ary)) = objADS.ReadText(-2)
	Loop
	
	'Stream オブジェクトを閉じる
	objADS.Close

	readFile = ary
end Function

Sub writeFile(file, ary)
	
	'Stream オブジェクトを開く
	objADS.Open
	
	'配列内容の出力
	For Each str In ary
		objADS.WriteText str, 1
	Next

	'ファイルが存在しても上書き( 1 はファイルが存在した場合にエラー)
	objADS.SaveToFile file, 2
	
	'Stream オブジェクトを閉じる
	objADS.Close
end Sub

Set objADS = Nothing
Set objFSO = Nothing
Set objShell  = Nothing


			

ページのトップへ戻る