ファイル名として無効な文字を削除した文字列が返します。
- 構文
- String = PathCleanupSpec( filename )
- 引数
- filename必須
- 使えない文字を削除するファイル・フォルダ名
- 戻り値
- ファイル名として使えない文字を削除した文字列
プログラム
//////////////////////////////////////////////////
// 【引数】
// filename : 使えない文字を削除するファイル・フォルダ名
// 【戻値】
// ファイル名として使えない文字を削除した文字列
//////////////////////////////////////////////////
FUNCTION PathCleanupSpec(filename)
DIM filenameErrChar[12] = "\", "/", ":", "*", "?", "<#DBL>", "<#CR>", "<#TAB>", "<", ">", "|", "[", "]"
FOR item IN filenameErrChar
filename = REPLACE(filename, item, "")
NEXT
RESULT = filename
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
//////////////////////////////////////////////////
// 【引数】
// num : 符号を調べる数値
// 【戻値】
// : 正の数
// 1、 : 0
// 0、 : 負の数
// -1、 :
//////////////////////////////////////////////////
FUNCTION sign(num)
SELECT TRUE
CASE num > 0
RESULT = 1
CASE num = 0
RESULT = 0
CASE num < 0
RESULT = -1
SELEND
FEND
-
(1)
- FSO.FolderExists(4) (4) (6) (8,9) (10) (11) (12) (13)
解説
- 1行目
- FileSystemObjectオブジェクトを生成し、 FSO に代入します。
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
- 3行目
DIM folderspec = "D:\Desktop\Screenshot"
- 4行目
IF FSO.FolderExists(folderspec) = FALSE THEN FSO.CreateFolder(folderspec)
- 6,15行目
FOR n = 0 TO GETALLWIN() - 1 … NEXT
- 7行目
DIM ID = ALL_WIN_ID[n]
- 8,14行目
IFB STATUS(ID, ST_VISIBLE) = TRUE … ENDIF
- 9行目
DIM filename = ID + "_" + STATUS(ID, ST_TITLE)
- 10行目
filename = PathCleanupSpec(filename)
- 11行目
DIM path = FSO.BuildPath(folderspec, filename)
- 12行目
path = uniqueFilename(path)
- 13行目
SAVEIMG(path, id)