【VBScript】フォルダ配下の指定した拡張子を持つ全てのファイルに対し、コマンドを実行する

前提

・ここではテキストファイル(.txt)のみを対象とする。必要に応じて修正する
・ここではcopyコマンドを実行する。必要に応じて修正する

サンプルプログラム

Option Explicit

'''''''''''''''''''''''''''''''''
'メイン処理
'''''''''''''''''''''''''''''''''
'処理対象とするファイルの拡張子を設定
Const REGEXP_PATTERN = ".txt"

'inputフォルダを設定
Dim inputFolder
inputFolder = "C:\Users\user\Desktop\old"

'outputフォルダを設定
Dim outputFolder
outputFolder = "C:\Users\user\Desktop\new"

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject") 

Dim folder
Set folder = fso.GetFolder(inputFolder)

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

'inputフォルダ配下の全ての対象ファイルに対し処理を実行
Dim command
Dim file
For Each file In folder.Files
	If IsMatchPattern(file.Name, REGEXP_PATTERN) Then
		'コマンドを設定
		command = "copy /b " & folder.Name + "\" & file.Name & " " + outputFolder & "\" & file.Name
		'コマンドを実行
		wsh.Run "cmd /c " & command, 1, True
	End if
next

'後片付け
Set fso = Nothing
Set folder = Nothing
Set file = Nothing
Set wsh = Nothing

'''''''''''''''''''''''''''''''''
'パターン解析処理
'''''''''''''''''''''''''''''''''
Function IsMatchPattern(ByVal str, pattern)

	Dim regExp
	Set regExp = CreateObject("VBScript.RegExp") 
	RegExp.Pattern = pattern
	RegExp.IgnoreCase = True '大文字と小文字を区別しない
	
	'解析を実行
	If RegExp.Test(str) Then
		IsMatchPattern = True
	Else
		IsMatchPattern = False
	End if

	Set RegExp = Nothing

End Function
タイトルとURLをコピーしました