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
ページのトップへ戻る