Folder.Path プロパティ

指定したフォルダーのパスを取得します。

構文
  1. String = Folder.Path
引数
戻り値

Folder オブジェクトを返すメソッド・プロパティ

FSO.GetSpecialFolder メソッド
Windowsの一部の特殊フォルダのFolder オブジェクトを返します。
File.ParentFolder プロパティ
指定したファイルの親のFolder オブジェクトを返します。

プログラム実行例

一時ファイルを作成・削除

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM filename = FSO.GetTempName
DIM path = FSO.BuildPath(folderspec, filename)

PRINT path

DIM TextStream = FSO.CreateTextFile(path)
// 現在の日時をファイルに書き込む
TextStream.WriteLine(now())
TextStream.Close

// Tempファイルを削除
// FSO.DeleteFile(path)

FUNCTION now()
	GETTIME()
	RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2
FEND
    (3) (4) (5) (6) (7) (11) (11)
  1. FSO.TextStream.WriteLine(13)
  2. (14) (17)
結果
プレーンテキスト
D:\TMP\rad83BB3.tmp

csvファイルをHTMLのテーブルデータにする(csvToHTML)

CSVのデータをHTML(テーブル)に変換します。

クリップボードにcsvファイルのパスをコピーして実行します。

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM name = FSO.GetTempName
DIM TempPath = FSO.BuildPath(folderspec, name)

DIM path = GETSTR(0)
DIM FID = FOPEN(path, F_READ)
DIM FID2 = FOPEN(TempPath, F_READ OR F_WRITE)
FPUT(FID2, "<table>", F_ALLTEXT)

FOR row = 1 TO FGET(FID, F_LINECOUNT)
	DIM col = 1
	FPUT(FID2, "<#TAB><tr>", 0)
	WHILE FGET(FID, row, col) <> ""
		FPUT(FID2, "<#TAB><#TAB><td>" + (FGET(FID, row, col)) + "</td>", 0)
		col = col + 1
	WEND
	FPUT(FID2, "<#TAB></tr>", 0)
NEXT
FPUT(FID2,"</table>", 0)

FCLOSE(FID)
FCLOSE(FID2)

FID = FOPEN(TempPath, F_READ)
SENDSTR(0, FGET(FID, F_ALLTEXT))
PRINT FGET(FID, F_ALLTEXT)
FCLOSE(FID)
    (3) (4) (5) (6) (7) (9) (10,11,28) (12,16,18,21,23) (14,30) (25,26,31) (29)

ファイルを開いているプロセスを調べる

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

WITH FSO
	DIM Folder = .GetSpecialFolder(TemporaryFolder)
	DIM folderspec = Folder.Path
	DIM filename = .GetTempName
	DIM path = .BuildPath(folderspec, filename)
ENDWITH

DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun()

DIM ID = GETID("ファイル名を指定して実行", "#32770")

SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
CLKITEM(ID, "OK", CLK_BTN)
SLEEP(0.500)

REPEAT
	SLEEP(0.100)
UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1

DIM FID = FOPEN(path, F_READ)

TRY
	DIM ID2 = GETID("使用中", "OperationStatusWindow")

	GETITEM(ID2, ITM_ACCTXT, 1)
	DIM str = ALL_ITEM_LIST[1]
	
	DIM sep = IIF(POS("フォルダー", STATUS(ID2, ST_TITLE)) <> 0, "\", "")
	DIM msg = "■" + str + "<#CR>"
	
	FOR r = 5 TO FGET(FID, F_LINECOUNT)
		IF POS("\" + str + sep,  FGET(FID, r, 3)) <> 0 THEN
			msg = msg + "ID:" + FGET(FID, r, 1) + ", プロセス名:" + FGET(FID, r, 2) + "<#CR>"
		ENDIF
	NEXT
	FCLOSE(FID)

	REPEAT
		FUKIDASI(TRIM(msg))
		SLEEP(0.100)
	UNTIL GETID("使用中", "OperationStatusWindow") = -1
FINALLY
	FSO.DeleteFile(path)
ENDTRY

//////////////////////////////////////////////////
// 【引数】
//   
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE forceQuit()
	EXITEXIT
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND
    (1) (5,14) (8) (9) (10) (11) (15) (17,25,30,48) (19) (20) (21,24,47) (27) (32) (35) (35) (38,39,40) (39) (43) (46) (46) (50)
解説
  1. 1行目
    UWSC
    SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
  2. 3行目
    UWSC
    CONST TemporaryFolder = 2
    TemporaryFolderに「2」を代入。
  3. 5行目
    UWSC
    DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
    FileSystemObjectオブジェクトを生成し、 FSO に代入します。
  4. 7-12行目
    UWSC
    WITH FSO
    	DIM Folder = .GetSpecialFolder(TemporaryFolder)
    	DIM folderspec = Folder.Path
    	DIM filename = .GetTempName
    	DIM path = .BuildPath(folderspec, filename)
    ENDWITH
    テンポラリフォルダ に一時ファイルを生成し、そのパスを path に代入する。
  5. 14行目
    UWSC
    DIM Shell = CREATEOLEOBJ("Shell.Application")
    Shellオブジェクトを生成し、 Shell に代入します。
  6. 15行目
    UWSC
    Shell.FileRun()
    「ファイル名を指定して実行」ウィンドウを開きます。
  7. 17行目
    UWSC
    DIM ID = GETID("ファイル名を指定して実行", "#32770")
    「ファイル名を指定して実行」のIDを取得し ID に代入する。
  8. 19-20行目
    UWSC
    SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
    CLKITEM(ID, "OK", CLK_BTN)
    「"cmd /c openfiles /query /fo CSV > " + path」を入力し「OK」を押す。「cmd /c command」がコマンドプロンプトで command を実行という意味。「openfiles /query /fo CSV > path」がファイルを開いているプロセスを取得し path に出力。DOSCMD (スクリプト関数)では「エラー: 対象となるシステムは 32 ビットの OS を実行している必要があります。」というエラーが表示されopenfilesコマンドを実行できないため、「ファイル名を指定して実行」経由でコマンドを実行。
  9. 21行目
    UWSC
    SLEEP(0.500)
    コマンドプロンプトのウィンドウが表示される前に23行目>>>がすり抜けるのを防止するための待機。
  10. 23-25行目
    UWSC
    REPEAT
    	SLEEP(0.100)
    UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1
    openfilesコマンドを実行して開いた、コマンドプロンプトのウィンドウが閉じるのを待つ。
  11. 27行目
    UWSC
    DIM FID = FOPEN(path, F_READ)
    path を読み取り専用で開く。
  12. 29,49,51行目
    UWSC
    TRY
    	…
    FINALLY
    	…
    ENDTRY

Tempフォルダのパスを取得

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)

PRINT Folder.Path
    (3) (4) (6)
結果
プレーンテキスト
D:\TMP

フォルダ内の情報を表示

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)

WITH Folder
	PRINT "名前:" + .Name
	PRINT "親フォルダパス:" + .ParentFolder.Path
	PRINT "パス:" + .Path
	PRINT "短い名前:" + .ShortName
	PRINT "短いパス:" + .ShortPath
ENDWITH
    (3) (4) (6) (7)
  1. FSO.Folder.ParentFolder(8)
  2. ([)
  3. FSO.Folder.ShortName(10)
  4. FSO.Folder.ShortPath(11)
結果
CSV(区切り文字「:」)
名前:             TMP
親フォルダパス:   D:\
パス:             D:\TMP
短い名前:         TMP
短いパス:         D:\TMP