ショートカットファイルの読み取る方法!!

takkun
どうも!たっくんです。
一日が24時間じゃ、やりたいことやりきれない!!

Susanoo」のリクエストで、「ショートカットファイルD&Dしたら登録できるようにしたい」っというものがありまして、どうやったら行けるかなーっと考えていたんですが、、、

Qt(PySide)で簡単にできるようだったので、ご紹介したいと思います!(`・ω・´)ゞ

QFileInfo

QFileInfoは、システムに依存しないファイル情報をゲットするのに大変便利なクラスです。例えば、ファイルサイズを調べたり、所有権、アクセス権を調べたりできます。

今回注目したのは、「isSymLink」と「symLinkTarget」です(`・ω・´)ゞ

isSymLink

このメソッドは、指定されたファイルがシンボリックリンク(Windowsの場合はショートカット)であるか調べることができます!

Windowsの場合は、拡張子が「lnk」であるかで調べられそうでしたが、Windows10にはフツーにシンボリックリンクがあるのでメソッドを使って判断したほうが良さそうです(`・ω・´)ゞ

from PySide import QtCore

file = QtCore.QFileInfo(r'C:\Autodesk Maya 2018.lnk')
print file.isSymLink()
# True

file = QtCore.QFileInfo(r'C:\maya.exe')
print file.isSymLink()
# True

symLinkTarget

このメソッドは、シンボリックリンク(Windowsの場合はショートカット)が指す「ファイル」か「ディレクトリ」の絶対パスを取得できます。

from PySide import QtCore

file = QtCore.QFileInfo(r'C:\Autodesk Maya 2018.lnk')
print file.symLinkTarget()
# C:/Program Files/Autodesk/Maya2018/bin/maya.exe

file = QtCore.QFileInfo(r'C:\maya.exe')
print file.symLinkTarget()
# C:/Program Files/Autodesk/Maya2018/bin/maya.exe

isSymLink」と「symLinkTarget」を使えば、簡単に目的のファイルやディレクトリに辿り着けそうです!(*´ω`*)b