Contents
指定したフォルダーのパスを取得します。
- 構文
- String = Folder.Path
- 引数
- 戻り値
Folder オブジェクトを返すメソッド・プロパティ
- FSO.GetSpecialFolder メソッド
- Windowsの一部の特殊フォルダのFolder オブジェクトを返します。
- File.ParentFolder プロパティ
- 指定したファイルの親のFolder オブジェクトを返します。
プログラム実行例
一時ファイルを作成・削除
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)
- FSO.TextStream.WriteLine(13) (14) (17)
- 結果
D:\TMP\rad83BB3.tmp
csvファイルをHTMLのテーブルデータにする(csvToHTML)
CSVのデータをHTML(テーブル)に変換します。
クリップボードにcsvファイルのパスをコピーして実行します。
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)
ファイルを開いているプロセスを調べる
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行目
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
- 3行目
- TemporaryFolderに「2」を代入。
CONST TemporaryFolder = 2
- 5行目
- FileSystemObjectオブジェクトを生成し、 FSO に代入します。
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
- 7-12行目
- テンポラリフォルダ に一時ファイルを生成し、そのパスを path に代入する。
WITH FSO DIM Folder = .GetSpecialFolder(TemporaryFolder) DIM folderspec = Folder.Path DIM filename = .GetTempName DIM path = .BuildPath(folderspec, filename) ENDWITH
- 14行目
- Shellオブジェクトを生成し、 Shell に代入します。
DIM Shell = CREATEOLEOBJ("Shell.Application")
- 15行目
- 「ファイル名を指定して実行」ウィンドウを開きます。
Shell.FileRun()
- 17行目
- 「ファイル名を指定して実行」のIDを取得し ID に代入する。
DIM ID = GETID("ファイル名を指定して実行", "#32770")
- 19-20行目
- 「"cmd /c openfiles /query /fo CSV > " + path」を入力し「OK」を押す。「cmd /c command」がコマンドプロンプトで command を実行という意味。「openfiles /query /fo CSV > path」がファイルを開いているプロセスを取得し path に出力。DOSCMD (スクリプト関数)では「エラー: 対象となるシステムは 32 ビットの OS を実行している必要があります。」というエラーが表示されopenfilesコマンドを実行できないため、「ファイル名を指定して実行」経由でコマンドを実行。
SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path) CLKITEM(ID, "OK", CLK_BTN)
- 21行目
- コマンドプロンプトのウィンドウが表示される前に23行目>>>がすり抜けるのを防止するための待機。
SLEEP(0.500)
- 23-25行目
- openfilesコマンドを実行して開いた、コマンドプロンプトのウィンドウが閉じるのを待つ。
REPEAT SLEEP(0.100) UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1
- 27行目
- path を読み取り専用で開く。
DIM FID = FOPEN(path, F_READ)
- 29,49,51行目
TRY … FINALLY … ENDTRY
Tempフォルダのパスを取得
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
PRINT Folder.Path
-
(3)
(4)
(6)
- 結果
D:\TMP
フォルダ内の情報を表示
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)
- FSO.Folder.ParentFolder(8) ([)
- FSO.Folder.ShortName(10)
- FSO.Folder.ShortPath(11)
- 結果
名前: TMP 親フォルダパス: D:\ パス: D:\TMP 短い名前: TMP 短いパス: D:\TMP