FSO.CreateFolder メソッド

本ページには広告が含まれています。

指定したパスにフォルダを作成します。foldernameに指定したパスにフォルダを作成します。指定したフォルダが既に存在する場合や親フォルダが存在しない場合は、エラーが発生します。

パスが存在するかどうか調べるにはFSO.CreateFolder メソッドを使います。

構文
FileSystemObject.CreateFolder( foldername )
引数
foldername 省略可
作成するフォルダーの名前を指定
戻り値

注意点

CreateFolderは親フォルダが存在しなければエラーになります。

以下は再帰呼び出しで親フォルダが存在するところまで遡り順にフォルダを作成していくプログラムです。

UWSC
PROCEDURE CreateFolders(folderspec)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	DIM parentPath = FSO.GetParentFolderName(folderspec)
	IFB !FSO.FolderExists(parentPath) THEN
		CreateFolders(parentPath)
	ENDIF
	IF !FSO.FolderExists(folderspec) THEN FSO.CreateFolder(folderspec)
FEND

プログラム実行例

表示されているすべてのウィンドウのスクリーンショットを保存

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

DIM folderspec = "D:\Desktop\Screenshot"
IF FSO.FolderExists(folderspec) = FALSE THEN FSO.CreateFolder(folderspec)

FOR n = 0 TO GETALLWIN() - 1
	DIM ID = ALL_WIN_ID[n]
	IFB STATUS(ID, ST_VISIBLE) = TRUE		
		DIM filename = ID + "_" + STATUS(ID, ST_TITLE)
		filename = PathCleanupSpec(filename)
		DIM path = FSO.BuildPath(folderspec, filename)
		path = uniqueFilename(path)
		SAVEIMG(path, id)
	ENDIF
NEXT

//////////////////////////////////////////////////
// 【引数】
//   filename : 使えない文字を削除するファイル・フォルダ名 
// 【戻り値】
//   ファイル名として使えない文字を削除した文字列 
//////////////////////////////////////////////////
FUNCTION PathCleanupSpec(filename)
	DIM filenameErrChar[12] = "\", "/", ":", "*", "?", "<#DBL>", "<#CR>", "<#TAB>", "<", ">", "|", "[", "]"
	FOR item IN filenameErrChar
		filename = REPLACE(filename, item, "")
	NEXT
	RESULT = filename
FEND

//////////////////////////////////////////////////
// 【引数】
//   path : ファイルのパス 
// 【戻り値】
//   重複しないファイル名 
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	IFB FSO.FileExists(path) THEN
		DIM fol = FSO.GetParentFolderName(path)
		DIM filename = FSO.GetBaseName(path)
		DIM extension = FSO.GetExtensionName(path)
		DIM i = 2
		WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
			i = i + 1
		WEND
		RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
	ELSE
		RESULT = path
	ENDIF
FEND
使用関数
解説

関連記事

Shell.Explore メソッド
指定したディレクトリをエクスプローラで開きます。
Folder オブジェクト
シェルフォルダを表します。
Folder.CopyHere メソッド (Shell)
1つまたは複数のアイテムをフォルダにコピーします。
Folder.GetDetailsOf メソッド (Shell)
フォルダ内のアイテムに関する詳細を取得します。
Folder.MoveHere メソッド (Shell)
1つまたは複数のアイテムをこのフォルダに移動します。
Folder.ParseName メソッド (Shell)
指定されたアイテムのFolderItem オブジェクトを作成して返します。
Folder.ParentFolder プロパティ (Shell)
指定したフォルダの親のFolder オブジェクトを返します。
FileSystemObject オブジェクト
Folder オブジェクト
Folder オブジェクト
フォルダのすべてのプロパティにアクセスできます。