FSO.GetParentFolderName メソッド

本ページには広告が含まれています。

指定したフォルダの親フォルダのパスを返します。

指定したパスは存在しなくてもエラーは発生しません。親フォルダを取得できない場合、空文字""を返します。

親フォルダ名のみを取得する場合はFileSystemObject.GetParentFolderNameを使います。

構文
  1. String = FileSystemObject.GetParentFolderName( path )
引数
path省略可
親フォルダを取得するパス
戻り値
親フォルダのパス

使い方

D:\Desktop\sample\の親フォルダのパスを取得します。

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

PRINT FSO.GetParentFolderName("D:\Desktop\sample\")
結果
プレーンテキスト
D:\Desktop

プログラム実行例

ファイルの作成日時・更新日時・アクセス日時を書き換える

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

DIM path = "D:\Documents\sample.txt"
DIM folderspec = FSO.GetParentFolderName(path)
DIM filename = FSO.GetFileName(path)
DIM CreationTime = "2022/07/01 00:00:00"      // 作成日時
DIM LastWriteTime = "2022/07/01 00:00:00"     // 更新日時
DIM LastAccessTime = "2022/07/01 00:00:00"    // アクセス日時

PRINT POWERSHELL("pushd <#DBL>" + folderspec + "<#DBL>;" + _
                    "Set-ItemProperty " + filename + " -name CreationTime -value  <#DBL>" + CreationTime + "<#DBL>;" + _
                    "Set-ItemProperty " + filename + " -name LastWriteTime -value  <#DBL>" + LastWriteTime + "<#DBL>;" + _
                    "Set-ItemProperty " + filename + " -name LastAccessTime -value  <#DBL>" + LastAccessTime + "<#DBL>;" + _
)
使用関数

パス名からファイル名・拡張子・ベース名・親フォルダを取得

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = "D:\Desktop\sample.txt"

WITH FSO
	PRINT "ファイル名︰" + .GetFileName(path)
	PRINT "ベース名︰" + .GetBaseName(path)
	PRINT "拡張子︰" + .GetExtensionName(path)
	PRINT "親フォルダ︰" + .GetParentFolderName(path)
ENDWITH
結果
CSV
ファイル名︰   sample.txt
ベース名︰     sample
拡張子︰       txt
親フォルダ︰   D:\Desktop
使用関数

メモ帳に本文を入力し[名前を付けて保存]ダイアログボックスを開いて保存する

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = "D:\Desktop\sample.txt"
DIM folderspec = FSO.GetParentFolderName(path)
DIM filename = FSO.GetFileName(path)

EXEC("notepad")
DIM ID = GETID("メモ帳", "Notepad")
SENDSTR(ID, "内容", 0)
CLKITEM(ID, "ファイル\名前を付けて保存", CLK_MENU)

IFB FSO.FolderExists(folderspec) THEN
	DIM ID2 = GETID("名前を付けて保存", "#32770")

	CTRLWIN(ID2, ACTIVATE)
	SLEEP(0.500)

	SCKEY(ID2, VK_F4)
	SENDSTR(ID2, folderspec, 1, TRUE)
	SCKEY(ID2, VK_RETURN)
	SLEEP(0.500)

	SCKEY(ID2, VK_ALT, VK_N)
	SENDSTR(ID2, filename, 1, TRUE)
	SLEEP(0.500)

	CLKITEM(ID, "保存", ITM_BTN)
ELSE
	PRINT "フォルダが存在しません。"
ENDIF
使用関数
解説

プロパティの項目を取得

UWSC
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

DIM path = "C:\Users\akita\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk"
DIM Folder = Shell.NameSpace(FSO.GetParentFolderName(path))

HASHTBL iColumn
 
FOR i = 0 TO 350
	iColumn[Folder.GetDetailsOf(EMPTYPARAM, i)] = i	
NEXT

FOR i = 0 TO LENGTH(iColumn)
	iColumn[iColumn[i, HASH_VAL]] = iColumn[i, HASH_KEY]
NEXT

DIM FolderItem = Folder.ParseName(FSO.GetFileName(path))
DIM array[] = "名前", "項目の種類", "ファイルの説明", "フォルダーのパス", "サイズ", "作成日時", "更新日時", "アクセス日時", "属性"

FOR i = 0 TO UBound(array)
	PRINT array[i] + ","+ Folder.GetDetailsOf(FolderItem, iColumn[array[i]])
NEXT

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
結果
CSV
名前,               Internet Explorer
項目の種類,         ショートカット
ファイルの説明,     
フォルダーのパス,   C:\ユーザー\akita\AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\Windows アクセサリ
サイズ,             1.31 KB
作成日時,           2021/02/04 12:46
更新日時,           2022/05/18 02:24
アクセス日時,       2023/04/24 00:29
属性,               A
使用関数
解説

指定フォルダ内の拡張子をすべて小文字にする

UWSC
CONST ssfDESKTOP = 0

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM folderspec = Shell.NameSpace(ssfDESKTOP).Self.Path
DIM Folder = Shell.NameSpace(folderspec + "\test\")
DIM FolderItems = Folder.Items

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

FOR FolderItem IN FolderItems
    DIM path = FolderItem.Path
    WITH FSO
        DIM filename1 = .GetParentFolderName(path) + "\" + .GetBaseName(path) + "." + .GetExtensionName(path)
        DIM filename2 = .GetBaseName(path) + "." + STRCONV(.GetExtensionName(path), SC_LOWERCASE)
    ENDWITH
    DOSCMD("RENAME <#DBL>" + filename1 + "<#DBL> <#DBL>" + filename2 + "<#DBL>")
NEXT
使用関数
解説

デスクトップにChromeのショートカットを作成

デスクトップにGoogle Chromeで[createLink url="https://google.co.jp" title="https://google.co.jp"]をシークレットモードで起動するショートカットを作成します。

UWSC
CONST ssfDesktop = 0

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM WshShell = CREATEOLEOBJ("WScript.Shell")

DIM Folder2 = Shell.NameSpace(ssfDesktop)
DIM path = Folder2.Self.Path + "\Chrome.lnk"
DIM WshShortcut = WshShell.CreateShortcut(path)

WITH WshShortcut
	DIM chromePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
	.Description = "Chromeをシークレットモードで起動します。"
	.Hotkey = "Ctrl+Shift+C"
	.IconLocation = chromePath + ",7"
	.TargetPath = chromePath
	.WindowStyle = 3
	.Save
ENDWITH

Folder = Shell.NameSpace(FSO.GetParentFolderName(path))
DIM FolderItem = Folder.ParseName(FSO.GetFileName(path))
DIM ShellLinkObject = FolderItem.Getlink()
DIM Args[] = "--incognito", "https://google.co.jp"

WITH ShellLinkObject
	.Arguments = JOIN(Args)
	.Save
ENDWITH
結果
Chromeのプロパティ.png
使用関数
解説

関連記事

Folder.ParentFolder プロパティ (Shell)
指定したフォルダの親のFolder オブジェクトを返します。