本ページには広告が含まれています。
目次
1つまたは複数のアイテムをこのフォルダーに移動します。
- 構文
- Folder.MoveHere( vItem, vOptions )
- 引数
- vItem (FolderItem オブジェクト,FolderItems オブジェクト)省略可
- ファイル名、FolderItemオブジェクト、またはFolderItemsオブジェクトを表す文字列。
- vOptions (Shfileopstruct)省略可
- 移動操作のオプション。0またはShfileopstruct構造体の値。
- 戻り値
Folder オブジェクトを返すメソッド・プロパティ
- Shell.BrowseForFolder メソッド
- フォルダ選択のダイアログボックスを表示し、選択したフォルダのFolderオブジェクトを返す。
- Folder.MoveHere メソッド
- FolderItemオブジェクトがフォルダの場合、Folder オブジェクトを返します。
SHFILEOPSTRUCTA 構造体
typedef struct _SHFILEOPSTRUCTA {
HWND hwnd;
UINT wFunc;
PCZZSTR pFrom;
PCZZSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
PCSTR lpszProgressTitle;
} SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA;
プログラム実行例
写真を撮影日時毎にフォルダ分けする
CONST ssfMYPICTURES = 39
DIM Folder[1]
DIM folderspec[1]
DIM Shell = CREATEOLEOBJ("Shell.Application")
folderspec[0] = "D:\Pictures\100ANDRO\"
Folder[0] = Shell.NameSpace(folderspec[0])
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
HASHTBL iColumn
FOR i = 0 TO 350
iColumn[Folder[0].GetDetailsOf(EMPTYPARAM, i)] = i
NEXT
DIM destination[-1]
DIM path[-1]
DIM cnt = Folder[0].Items.Count - 1
FOR i = cnt TO 0 STEP -1
FUKIDASI(i + "/" + cnt)
DIM FolderItem = Folder[0].Items.Item(i)
IF FolderItem.isFolder THEN CONTINUE
DIM filename = FolderItem.Name
DIM datetime = deleteControlCharacter(Folder[0].GetDetailsOf(FolderItem, iColumn["撮影日時"]))
PRINT filename
PRINT datetime
PRINT "-----"
TRY
DIM date = text(dateValue(datetime), "yyyy-mm-dd")
EXCEPT
date = "0000-00-00"
ENDTRY
folderspec[1] = FSO.BuildPath(folderspec[0], date)
Folder[1] = Shell.NameSpace(folderspec[1])
arrayPush(destination, folderspec[1])
arrayPush(path, FolderItem.Path)
NEXT
FOR i = 0 TO UBound(destination)
IF !FSO.FolderExists(destination[i]) THEN CreateFolders(destination[i])
Folders = Shell.NameSpace(destination[i])
Folders.MoveHere(path[i])
NEXT
FUNCTION deleteControlCharacter(str)
DIM array[] = CHR(8206), CHR(8207)
FOR item IN array
str = REPLACE(str, item, "")
NEXT
RESULT = str
FEND
使用関数
全ファイルをサブフォルダから直下に取り出す
D:\Pictures\100ANDRO\より下層フォルダにあるファイルを直下に移動させます。ファイル名が重複する場合は - コピー、 - コピー (2)のような連番をつけて変更されます。
空になったフォルダを削除するにはdeleteEmptyFoldersを使います。
CONST FOF_RENAMEONCOLLISION = 8
DIM folderspec = "D:\Pictures\100ANDRO\"
DIM array = getFileList(folderspec)
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(folderspec)
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
FOR item IN array
IF FSO.FolderExists(item) THEN CONTINUE
PRINT Folder.Self.Path
PRINT item
Folder.MoveHere(item, FOF_RENAMEONCOLLISION)
NEXT
使用関数
指定したファイルをゴミ箱に移動する
CONST ssfBITBUCKET = 10
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfBITBUCKET)
DIM source = "D:\Desktop\sample.txt"
Folder.MoveHere(source)
使用関数
解説
選択したファイルを移動する
CONST ssfDRIVES = 17
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM source = Shell.BrowseForFolder(0, "移動元フォルダを選択してください。", 0, ssfDRIVES)
IF source = NOTHING THEN EXIT
DIM Folder = Shell.BrowseForFolder(0, "移動先フォルダを選択してください。", 0, ssfDRIVES)
IF Folder = NOTHING THEN EXIT
Folder.MoveHere(source)
MSGBOX(source.Self.Path + " を " + Folder.Self.Path + " に移動しました。")
使用関数
関連記事
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- FileSystemObject オブジェクト
- getFileList関数 (自作関数)
- サブフォルダを含めたファイル一覧を配列で返します。
- DELETEFILE関数 (スクリプト関数)
- テキストファイルを削除します。
- FCLOSE関数 (スクリプト関数)
- テキストファイルを閉じます。
- FDELLINE関数 (スクリプト関数)
- テキストファイルの指定行を削除します。
- FGET関数 (スクリプト関数)
- テキストファイルの読み込みを行います。
- FOPEN関数 (スクリプト関数)
- テキストファイルを開き、ファイルIDを取得します。
- GETDIR関数 (スクリプト関数)
- FSO.DeleteFile メソッド
- 指定したファイルを削除します。