Скрипт для изменения ярлыка целей в пакете? - PullRequest
0 голосов
/ 09 сентября 2011

Мой внешний жесткий диск недавно был заражен вирусом recycler.exe, когда я одолжил его другу. Вирус поражает только внешние диски. Он превращает папки в ярлыки для этих папок с помощью создаваемого им EXE-файла.

Я ищу скрипт для изменения всех целей ярлыка на K: \ {имя ярлыка} . Однако я не знаю сценариев, и в последние два дня, когда я пытался изучать сценарии, я не уверен, какой из них мне следует использовать. VBScript кажется лучшим вариантом, но это только мое мнение.

Проблема: Например, раньше у меня была папка «Аниме». Теперь у меня есть ссылка на эту папку со следующей целью:

% windir% \ system32 \ cmd.exe / c "start% cd% RECYCLER \ 894133bf.exe &&% windir% \ explorer.exe% cd% Аниме

Вирус также создает папку (и файл) \ RECYCLER \ 894133bf.exe , и ярлыки связаны с этим файлом EXE (см. Выше).

Я бы хотел, чтобы пакетный файл преобразовал целевой путь в: K: \ Anime

Таким образом, ярлык может напрямую ссылаться на файл. Вирус и папка были удалены Нортоном, когда я вернул свой жесткий диск. Тем не менее, ярлыки остаются, и они не будут работать, пока я не изменю целевой путь.

Поскольку у меня на жестком диске более 37 папок, которые были преобразованы в ярлыки, я подумал, что, возможно, сценарий будет полезен для выполнения следующих действий:

  1. Извлечение имени файла из ярлыка
  2. Удаление .lnk из имени файла
  3. Изменение цели на K: \ {имя ярлыка}
  4. Перейти к следующей папке и перейти к последней папке

Я наткнулся на скрипт для извлечения имени файла здесь: http://blogs.technet.com/b/heyscriptingguy/archive/2006/05/30/how-can-i-extract-just-the-file-name-from-the-full-path-to-the-file.aspx

Однако я не знаю, как поместить это в цикл, чтобы сделать это для каждой папки.

Любая помощь будет высоко ценится. Большое спасибо.

1 Ответ

0 голосов
/ 09 сентября 2011

objFolder.Name в цикле For - это строка для каждой папки, через которую она проходит.

    Option Explicit
    Dim strFolderToSearch, objFSO, objRootFolder, objFolder, colSubfolders, strOutput

    strFolderToSearch = InputBox("Enter Path:")

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objRootFolder = objFSO.GetFolder(strFolderToSearch)
    Set colSubfolders = objRootFolder.SubFolders

    For Each objFolder in colSubfolders
         strOutput = strOutput & objFolder.name
         strOutput = strOutput &  vbCrLf
         MsgBox StrOutput
    Next
...