今回は、指定したフォルダー内のファイルとフォルダーのショートカットを作成し、元ファイルと更新日時を合わせるサンプルコードを紹介します。
元ファイルと更新日時を合わせるメリットは、通常ファイルとフォルダーを更新日時順で並べるとファイルとフォルダーで別れてしまいます。
ですので、ファイルとフォルダーを混在した状態で更新日時順に並べることはできません。
このような場合にショートカットが便利です。
ファイルのショートカットであろうと、フォルダーのショートカットであろうと、ショートカットはファイルとして扱われますので、ファイルとフォルダーを混在した状態で更新日時順に並べることが可能になります。
主に使用する関数:
_FileListToArray(指定したフォルダー内のファイルやフォルダーを一覧表示)
_PathSplit(パスをドライブ、ディレクトリ、ファイル名、ファイル拡張子の部分に分割)
FileCreateShortcut(ファイルまたはフォルダーのショートカットを作成)
FileGetTime(ファイルの日時の情報を取得)
FileSetTime(ファイルの日時を変更)
サンプルコードと解説
#include <File.au3>
$Target_Folder = "C:\Windows"
$Shortcut_Folder = @DesktopDir & "\ショートカット置き場"
_CreateShortcut()
Func _CreateShortcut()
Local $sDrive = "", $sDir = "", $sFilename = "", $sExtension = "", $aPathSplit = ""
If Not FileExists($Shortcut_Folder) Then DirCreate($Shortcut_Folder)
Local $List = _FileListToArray($Target_Folder)
For $i = 1 To $List[0]
$aPathSplit = _PathSplit($Target_Folder & "\" & $List[$i], $sDrive, $sDir, $sFilename, $sExtension)
FileCreateShortcut($Target_Folder & "\" & $List[$i], $Shortcut_Folder & "\" & $sFilename)
FileSetTime($Shortcut_Folder & "\" & $sFilename & ".lnk", FileGetTime($Target_Folder & "\" & $List[$i], 0, 1))
Next
EndFunc ;==>_CreateShortcut
解説
変数 $Target_Folder にはショートカットの元となるファイルが存在するフォルダーを指定します。
変数 $Shortcut_Folder には作成するショートカットを保存するフォルダーを指定します。
If Not FileExists($Shortcut_Folder) Then DirCreate($Shortcut_Folder) では、指定されたショートカットを保存するフォルダーが存在するかを判断し、存在しなければ作成します。
Local $List = _FileListToArray($Target_Folder) でショートカットの元となるファイルが存在するフォルダー内のファイルとフォルダーを取得します。
FileCreateShortcut($Target_Folder & “\” & $List[$i], $Shortcut_Folder & “\” & $sFilename) で、取得したファイルとフォルダーのショートカットを作成します。
FileSetTime($Shortcut_Folder & “\” & $sFilename & “.lnk”, FileGetTime($Target_Folder & “\” & $List[$i], 0, 1)) で、ショートカットの元となるファイルとフォルダーの更新日時を取得し、ショートカットの更新日時を取得した日時に変更します。
注意事項
FileCreateShortcut 関数は、同じ名前のショートカットが既に存在する場合は上書きされます。
上書きをしたくない場合は条件を追加してください。
便利な使い方
変数 $Target_Folder と 変数 $Shortcut_Folder にそれぞれフォルダーを指定し、コンパイルしておきます。
これを指定した時間に自動で実行するように タスクスケジューラ に登録をしておくと便利です。
あるいは While…Wend, Sleep を使用してプログラム内で 1時間ごとに繰り返すなどしても良いですね。
これにより常に同期されるようになります。
ショートカットをおすすめする理由は、誤って削除しても元ファイルが削除されないためです。
また、ファイルとフォルダーを混在した状態で更新日時順に並べることが可能だからです。
常にショートカットからファイルやフォルダーにアクセスするようにしておけば、管理がしやすくなります。
ご自身でコードの追加や変更をして使いやすくしてみてください。
コメント