CreateFolder

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

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

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

注意点

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

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

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

プログラム実行例

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

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