3

問題: C ドライブに J: ドライブを指す多数の .lnk ファイルがありますが、J: ドライブがなくなり、P: ドライブに置き換わっています。とにかく.lnkファイルを動作させるためにさまざまなトリックが行われましたが、面倒になりつつあり、物事を修正する時が来ました.

Ruby、Python、WSH.JScript、または Perl を使用して、.lnk ファイルのディレクトリ ツリー全体を繰り返し処理し、j:/* ではなく p:/* を指すように変更できますか? あなたならどうしますか?

注:これは私にとって完全に未知というわけではありませんが、私がこれまでに見つけた方法で .lnk ファイルを管理するための API は、これを行う最もよく知られている方法としては面倒すぎるように思われるため、とにかく質問します。これは、絶望的な「もっと良い方法があるはずだ」タイプの質問の 1 つです。

4

3 に答える 3

4

WindowsNT リソース キットには、Shortcut.exe というコマンド ライン ユーティリティがあり、XP/2000/2003 でも動作することが確実にわかっています。さまざまなコマンド ライン スイッチを使用して、新しいショートカットを指すように既存の LNK ファイルを変更できます。

ここでそれに関する情報を見つけました: http://www.ss64.com/nt/shortcut.html

Microsoft の Web サイトで WindowsNT リソース キットを探し出して抽出するのは、それほど難しいことではありません。これはコマンド ライン ユーティリティであるため、バッチ処理を実行してすべての LNK ファイルをループ処理し、それらが正しくなるように変更できるはずです。

于 2008-12-05T00:33:51.323 に答える
2

正常に動作するこの VB スクリプトを見つけました。

http://www.enterpriseitplanet.com/resources/scripts_win/article.php/3081941

いくつかの警告:

気をつけろ!ドライブのルートから実行されます。自分のマシンでテストすると、すべての Windows ショートカットを再マッピングするリスクがあります。あなたのスタートメニューにあるもの!スクリプトを少し編集して、( Main() メソッド内で) もう少し制御できるようにしました。

   dim onlyFolder
    Set onlyFolder =fso.GetFolder("C:\") 
    SearchFolder onlyFolder

'   for each aDrive in fso.Drives       
'       if aDrive.DriveType = 2 then
'           SearchFolder aDrive.RootFolder
'       end if
'   next

fixlinks.ini ファイルは空行を好みません。偶数行にする必要があります。

バックグラウンドで実行され、難しいディレクトリのアクセス許可エラーがポップアップ表示される場合があります。最後の確認ウィンドウを除いて、いつ終了したかを判断するのは困難です。おそらく、Process Explorer で監視し、Vista などの管理者としてコマンド シェルから実行することをお勧めします。

それ以外は、うまくいきました!

于 2009-07-31T10:40:51.377 に答える