機能しなくなったショートカットファイル(.lnk)を開こうとすると、Windowsは、「このショートカットは変更または移動されたため、このショートカットは正しく機能しなくなります」というプロンプトで通知します。そのようなショートカットが機能しなくなったかどうかを検出するために使用できるPythonコードはありますか?
次のコードを実行して、機能しなくなったショートカットのターゲットパスを取得しても、どのような種類のエラーも発生しません。コードは、存在しなくなったターゲットファイルへのパスを出力します。
import win32com.client
shell = win32com.client.Dispatch('WScript.Shell')
shortcut = shell.CreateShortcut(shortcutpath_cur)
target = shortcut_cur.Targetpath
print(target)
ショートカットが指すドキュメントがまだ存在していても、ショートカットが機能しなくなることがあります。その場合、使用できなかった、os.path.exists()
またはos.path.isfile()
返されるためTrue
です。
これを行うには、ファイルパスに既存のファイルがあるかどうかを確認します。これを行うための多くの方法を含むSOの解決策がここにあります:ファイルが例外なく存在するかどうかを確認するにはどうすればよいですか?
ショートカットで指定されたパスにファイルが存在するかどうかを確認すると、ショートカット自体が機能するかどうかを検出し、独自の手順を実行できます。
これを行うために使用できる上記のリンクからの引用は次のとおりです。
「ファイルをすぐに開く予定がない場合は、os.path.isfileを使用できます。
パスが既存の通常ファイルの場合はTrueを返します。これはシンボリックリンクに従うため、islink()とisfile()の両方が同じパスに対してtrueになる可能性があります。
import os.path
os.path.isfile(fname)
それがファイルであることを確認する必要がある場合。」
何らかの理由でファイルが存在するがショートカットが機能しない場合、これは機能しません。次に、を使用しtry:
てファイルとexcept:
発生する可能性のあるすべてのエラーを開くことができます。権限が不十分target
なため、またはが有効でなくなったために、ショートカットが機能しない場合があります。
ファイルが存在するがショートカットで開かない場合は、ショートカットファイル自体、ターゲットファイル、オペレーティングシステムのバグ/不具合、または不十分な権限に問題があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加