PathCleanupSpec

ファイル名として無効な文字を削除した文字列が返します。

構文
  1. String = PathCleanupSpec( filename )
引数
filename必須
使えない文字を削除するファイル・フォルダ名
戻り値
ファイル名として使えない文字を削除した文字列

プログラム

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

//////////////////////////////////////////////////
// 【引数】
//   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)
  1. FSO.FolderExists(4)
  2. (4) (6) (8,9) (10) (11) (12) (13)
解説
  1. 1行目
    UWSC
    DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
    FileSystemObjectオブジェクトを生成し、 FSO に代入します。
  2. 3行目
    UWSC
    DIM folderspec = "D:\Desktop\Screenshot"
  3. 4行目
    UWSC
    IF FSO.FolderExists(folderspec) = FALSE THEN FSO.CreateFolder(folderspec)
  4. 6,15行目
    UWSC
    FOR n = 0 TO GETALLWIN() - 1
    	…
    NEXT
  5. 7行目
    UWSC
    	DIM ID = ALL_WIN_ID[n]
  6. 8,14行目
    UWSC
    	IFB STATUS(ID, ST_VISIBLE) = TRUE		
    		…
    	ENDIF
  7. 9行目
    UWSC
    		DIM filename = ID + "_" + STATUS(ID, ST_TITLE)
  8. 10行目
    UWSC
    		filename = PathCleanupSpec(filename)
  9. 11行目
    UWSC
    		DIM path = FSO.BuildPath(folderspec, filename)
  10. 12行目
    UWSC
    		path = uniqueFilename(path)
  11. 13行目
    UWSC
    		SAVEIMG(path, id)