批量更改快捷方式目标?

Her*_*ill 6 windows script shortcuts windows-8

我有数百个指向目标的网站的快捷方式,如下所示:

C:\Users\Herb\AppData\Local\Google\Chrome\Application\chrome.exe www.somesite.com/foo

我刚刚升级到 Windows 8,Chrome 可执行文件现在存储在 Program Files 中;所以为了让这些快捷方式工作,我必须把它们改成这样:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" www.somesite.com/foo

有什么办法可以自动执行此更改吗?我是一名程序员,但在 Windows 脚本方面做得并不多。

Ter*_*nce 15

我最近发现自己遇到了类似的问题,并决定按照最初的要求对链接进行脚本修改。也许其他人会发现这很有用。这是一个基于前面提到的链接的 PowerShell 脚本,但有一些改进(仅在前导路径名上触发,修改现有链接而不是删除/创建,具有试运行模式等)。

我对 PowerShell 不是特别了解,所以我欢迎任何改进建议:

$oldPrefix = "\\OldServer\Archive\"
$newPrefix = "\\NewServer\Archive\"

$searchPath = "Z:\"

$dryRun = $TRUE

$shell = new-object -com wscript.shell

if ( $dryRun ) {
   write-host "Executing dry run" -foregroundcolor green -backgroundcolor black
} else {
   write-host "Executing real run" -foregroundcolor red -backgroundcolor black
}

dir $searchPath -filter *.lnk -recurse | foreach {
   $lnk = $shell.createShortcut( $_.fullname )
   $oldPath= $lnk.targetPath

   $lnkRegex = "^" + [regex]::escape( $oldPrefix ) 

   if ( $oldPath -match $lnkRegex ) {
      $newPath = $oldPath -replace $lnkRegex, $newPrefix

      write-host "Found: " + $_.fullname -foregroundcolor yellow -backgroundcolor black
      write-host " Replace: " + $oldPath
      write-host " With:    " + $newPath

      if ( !$dryRun ) {
         $lnk.targetPath = $newPath
         $lnk.Save()
      }
   }
}
Run Code Online (Sandbox Code Playgroud)