PoshCode Archive  Artifact Content

Artifact 8a4ef9dcec230a503ff2d2f50c61e23673e66fbad44154261c6f336736f50959:

  • File Sort-IE-Favorites.ps1 — part of check-in [5dde9732b7] at 2018-06-10 13:36:20 on branch trunk — This is a simple little script that will read in your favorites and sort them into folders based on the hostname in the URL. (user: Jeff Patton size: 1986)

# encoding: ascii
# api: powershell
# title: Sort IE Favorites
# description: This is a simple little script that will read in your favorites and sort them into folders based on the hostname in the URL.
# version: 0.1
# type: script
# author: Jeff Patton
# license: CC0
# x-poshcode-id: 4096
# x-archived: 2016-04-19T06:39:59
# x-published: 2013-04-09T20:38:00
#
#
$Results = gci $env:userprofile\favorites -rec -inc *.url |
? {select-string -inp $_ -quiet "^URL=http"} |
select @{Name="Name"; Expression={[IO.Path]::GetFileNameWithoutExtension($_.FullName)}},
@{Name="URL"; Expression={get-content $_ | ? {$_ -match "^URL=http"} | % {$_.Substring(4)}}}

New-Item $env:userprofile\favorites\sorted -ItemType directory
foreach ($Result in $Results |Sort-Object -Property url)
{
    $Url = [System.Uri]$Result.URL
    if ($Url)
    {
        $Folders = $Url.Host.Split(".")
        if ($url.Host -eq 'agoodman.com.au')
        {
            #break
            }
        if ($Folders.Count -eq 2)
        {
            $RootFolder = $Folders[0]
            }
        if ($Folders.Count -eq 3)
        {
            $RootFolder = $Folders[1]
            if (($Folders[$Folders.Count-1]).Length -eq 2)
            {
                $RootFolder = $Folders[0]
                }
            }
        if ($Folders.Count -gt 3)
        {
            if (($Folders[$Folders.Count-1]).Length -eq 3)
            {
                $RootFolder = ($Folders[$Folders.Count-3])
                }
            }
        New-Item "$($env:userprofile)\favorites\sorted\$($RootFolder)" -ItemType Directory -Force

        $shell = New-Object -ComObject WScript.Shell
        $FileName = $Result.Name.Trim() -replace "[^a-zA-Z0-9\s]",""

        $path = "$($env:userprofile)\favorites\sorted\$($RootFolder)\$($FileName).URL"
        $ShortCut = $shell.CreateShortCut($path)
        $ShortCut.TargetPath = $Result.URL
        $ShortCut.Save()
    }
}