小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

VBScript(VBスクリプト)でDIRするには?

たとえば、フォルダ(ディレクトリ)内のすべてのファイルに対して処理をしたい場合が、結構あります。
VB6では、DIR関数を使って比較的簡単に実装できますが、VBSでは、DIR関数そのものがありません。
したがって、VBSでは、正規表現オブジェクトとFilesコレクションを使います。


留意点として、VB6とVBSはカレントディレクトリが違いますので、これに関しては、以下のリンク先を参照してください。

また、正規表現オブジェクトに関しては、以下のリンク先を参照してください。

VB6

Option Explicit
Dim vntP As Variant

	vntP = Dir("qa*htm", vbNormal)
	Do While vntP <> ""
		
		'フォルダ内の各ファイルに対しての処理を記述する。
		
		vntP = Dir
	Loop

VBS

Option Explicit
Dim fs, f, f1, fc, RE, objWshShell

	Set objWshShell = WScript.CreateObject("WScript.Shell")
	Set RE = CreateObject("VBScript.RegExp")
	RE.Pattern ="qa.*htm"
	Set fs = CreateObject("Scripting.FileSystemObject")
	Set f = fs.GetFolder(objWshShell.CurrentDirectory)
	Set fc = f.Files
	For Each f1 in fc
		If RE.Test(f1.name) then
		
			'フォルダ内の各ファイルに対しての処理を記述する。
		
		End If 
	Next
	Set fs = Nothing
	Set RE = Nothing