【问题标题】:Reformatting Windows lnk file via an automated script通过自动脚本重新格式化 Windows lnk 文件
【发布时间】:2008-12-05 00:21:24
【问题描述】:

问题: C盘上有一堆.lnk文件指向J:盘,但是J:盘不见了,取而代之的是P:盘。已经采取了各种技巧来让 .lnk 文件仍然可以正常工作,但它变得越来越烦人,是时候修复这些问题了。

使用 Ruby、Python、WSH.JScript 或 Perl,您能否遍历 .lnk 文件的整个目录树并将它们更改为指向 p:/* 而不是 j:/*?你会怎么做呢?

注意:这对我来说并不完全陌生,但我还是会问这个问题,因为以我目前发现的方式管理 .lnk 文件的 API 似乎太麻烦了最知名的方法。这是那些“必须有更好的方法”类型的问题之一。

【问题讨论】:

  • 你提到你找到了一个“麻烦的方式”;你能详细说明一下吗?我猜你指的是实例化 IShellLink 对象并调用 IShellLink::SetPath?

标签: windows shortcut symlink lnk


【解决方案1】:

在 WindowsNT 资源工具包中有一个名为 Shortcut.exe 的命令行实用程序,据我所知,它也可以在 XP/2000/2003 下运行。您可以使用各种命令行开关来修改现有的 LNK 文件以指向新的快捷方式。

我在这里找到了有关它的信息: http://www.ss64.com/nt/shortcut.html

我敢说,在 Microsoft 网站上搜索 WindowsNT 资源工具包并提取它不会太难。它是一个命令行实用程序,因此您应该能够批处理它以循环遍历所有 LNK 文件并修改它们以使其正确。

【讨论】:

    【解决方案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/etc 上以管理员身份从命令 shell 运行它。

    除此之外,效果很好!

    【讨论】:

      【解决方案3】:

      只需在 J.A.F.A.T. 使用 lnk 文件解析器。取证分析工具项目的存档

      请参阅http://jafat.sourceforge.net 上的 lnk-parse-1.0.pl

      似乎没有没有依赖关系(尤其是不糟糕的 Windows 材料)。语法很简单,链接文件在标准输出中变成了一个简单的文本。

      【讨论】:

      • 这个程序编译时间为10ms,每次编译只能处理一个lnk。它正在使用常量文件处理程序(FH 而不是 $fh)。
      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      相关资源
      最近更新 更多