2008-12-05 8 views
3

Problème: Il y a beaucoup de fichiers .lnk sur le lecteur C qui pointent vers le lecteur J: mais le lecteur J: est parti, et le lecteur P: a remplacé il. Divers trucs ont été faits pour faire fonctionner les fichiers .lnk de toute façon, mais ça devient agaçant, et il est temps de réparer les choses. En utilisant Ruby, Python, WSH.JScript ou Perl, pouvez-vous parcourir une arborescence entière de fichiers .lnk et les modifier pour qu'ils pointent vers p:/* au lieu de j:/*? Comment vous y prendrez-vous?Reformatage du fichier lnk Windows via un script automatisé

Note: Ce n'est pas un total inconnu pour moi, mais je pose la question de toute façon parce que l'API de gestion des fichiers .lnk de la manière que j'ai trouvé à ce jour semble trop lourd pour être le moyen le plus connu de Ce faisant. C'est une de ces questions de type "il doit y avoir un meilleur moyen".

+0

Vous mentionnez que vous avez trouvé une «méthode encombrante»; pourriez-vous élaborer de cette façon? Je suppose que vous faites référence à l'instanciation des objets IShellLink et à l'appel de IShellLink :: SetPath? – reuben

Répondre

4

Dans le Kit de ressources Windows NT, il existe un utilitaire de ligne de commande appelé Shortcut.exe, dont je suis sûr qu'il fonctionnera également sous XP/2000/2003. Vous pouvez utiliser divers commutateurs de ligne de commande pour modifier les fichiers LNK existants afin qu'ils pointent vers de nouveaux raccourcis.

J'ai trouvé des informations à ce sujet ici: http://www.ss64.com/nt/shortcut.html

J'ose dire qu'il ne peut pas être trop difficile pour traquer le Kit de ressources Windows NT sur le site Web de Microsoft et l'extraire. C'est un utilitaire de ligne de commande, vous devriez donc pouvoir le charger en boucle pour parcourir tous les fichiers LNK et les modifier pour qu'ils soient corrects.

2

Nous avons trouvé ce script VB qui fonctionne bien.

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

Quelques avertissements:

Attention! Il fonctionne à partir de la racine du lecteur. Si vous le tester sur votre propre machine, vous risquez de remapper tous vos raccourcis Windows - par exemple. ceux sur votre menu Démarrer! Nous avons modifié le script un peu pour obtenir un peu plus de contrôle (dans la méthode 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 

Le fichier fixlinks.ini n'aime pas les lignes vides, il doit être un nombre pair de lignes.

Il s'exécute en arrière-plan et peut faire apparaître des erreurs d'autorisation pour les répertoires difficiles. Il est difficile de dire quand il a fini, sauf pour la fenêtre de confirmation à la fin. Probablement préférable de garder un oeil dessus dans Process Explorer, et exécutez-le à partir d'un shell de commande en tant qu'administrateur sur Vista/etc.

À part ça, ça a bien marché!

2

Utilisez simplement l'analyseur de fichiers lnk au J.A.F.A.T. Archive of Forensics Analysis Tools, projet.

Voir lnk-parse-1.0.pl à http://jafat.sourceforge.net

Il ne semble pas avoir aucune dépendance (et notamment pas terrible matériel de Windows). La syntaxe est simple et le fichier de lien devient un texte simple dans la sortie standard.

+0

Ce programme compile pendant 10ms et ne peut traiter qu'un seul lnk par compilation.Il utilise un gestionnaire de fichiers constant (FH au lieu de $ fh). –

Questions connexes