param( [parameter(mandatory=$true)] [string] $DvdPathRoot, [parameter(mandatory=$false)] [string] $UserDirectory ); function NormalName { param($name); $name = $name.ToLower(); $name = $name.Replace('the', ''); $name = $name.Replace(' ', '').Replace('#', '').Replace(',', '').Replace(';', '').Replace('!', '').Replace('-', ''); $name = $name.Replace('<', '').Replace('>', '').Replace(':', '').Replace('"', '').Replace('$', ''); $name = $name.Replace('/', '').Replace('\', '').Replace('|', '').Replace('?', '').Replace('*', ''); $nameParts = $name.split('[](){}'); $name = ''; for ($nameIdx = 0; $nameIdx -lt $nameParts.length; $nameIdx += 2) { $name += $nameParts[$nameIdx]; } $name; } pushd . if (!$UserDirectory) { cd ~; } else { cd $UserDirectory; } dir appdata\roaming\microsoft\ehome\dvdinfocache\*xml | %{ $dvdInfo = $_; $xmlNode = (select-xml -path $_ -xpath '/METADATA/MDR-DVD'); $dvdName = $xmlNode.Node.dvdTitle; $imgName = $xmlNode.Node.largeCoverParams.Replace('/', '-'); dir $DvdPathRoot\* | %{ $normalDvdName = NormalName($dvdName); $normalDirName = NormalName($_.Name); if ($normalDvdName.equals($normalDirName)) { echo ("Matched " + ($dvdName) + " to " + ($_.FullName)); copy appdata\roaming\microsoft\ehome\dvdcovercache\$imgName $_\folder.jpg $dvdInfoName = $dvdInfo.BaseName; echo "$dvdName$dvdInfoName" > $_\dvdid.dvdid.xml } } } popd