Quantcast
Channel: PowerShell.org » All Posts
Viewing all articles
Browse latest Browse all 13067

Finding Hyperlinks in word documents then attaching the document

$
0
0

Hey, Im creating a powershell script to search through word documents for hyperlinks. Here is what I would like to achive –

Search through the word document

Find the hyperlinks

obtain the hyperlink address

find the other word document from that hyperlink address

Then attach that document to the original document

Here is what I have so far : -

$wdStory = 6
 
$wdMove = 0
 
$application = New-Object -ComObject word.application
 
$root='S:\IT\Applications\Livelink\OIDocuments\Aled'
 
$subfolder='\Docs'
 
$path = "$root$subfolder"
 
$ifile="$($root)\Part_6_Load_runindex.txt"
 
$file="$($root)\debug_Part_6_Load.txt"
 
 
 
Get-ChildItem $path -Recurse -include *.doc, *.docx |
 
    ForEach-Object{
 
        $document=$application.documents.open($_.fullname)
 
        write-host "Processing $($document.name)" -ForegroundColor green
 
        $objSelection = $application.Selection
 
        $a = $objSelection.EndKey($wdStory, $wdMove)
 
        $docprops=@{
 
            Name=$_.Name
 
            Path=$_.DirectoryName
 
           LinkText=$null
 
            LinkAddress=$null
 
                }
 
        $document.Hyperlinks |
 
            ForEach-Object{
 
                $docprops.LinkText=$_.TextToDisplay
 
                $docprops.LinkAddress=$_.Address
 
                New-Object PSObject -Property $docprops
 
                $fpath = $document.path;
 
                $newaddress= $fpath.SubString(0,($fpath.LastIndexOf('\')+1))
 
                $faddress = $_.Address
 
                add-content $file "newaddress: $($newaddress)";
 
                if($faddress.startswith("..\"))
 
                {
 
                    $newaddress = $newaddress+$faddress.replace("..\","")
 
                    write-host $newaddress;
 
                    add-content $file "newaddress (..\): $($newaddress)";
 
                    write-host "another end";
 
                }
 
                elseif($faddress.startswith("\\"))
 
                {
 
                    $newaddress = $faddress;
 
                    write-host $newaddress;
 
                    add-content $file "newaddress (\\): $($newaddress)";
 
                     write-host "another end";
 
                }
 
                else
 
                {
 
                        #$newaddress = +$root;
 
                        #$faddress.replace("../","/")
 
                        write-host $root
 
                        $faddress = $faddress.replace("../","\")
 
                        $newaddress = $newaddress + $faddress
 
                        write-host $newaddress
 
 
 
                }
 
                #$objselection.InsertBreak(1);
 
                #$insertdoc = $application.documents.open($newaddress)
 
 
 
                    }
 
 
 
 
 
        $document.Close()
 
        [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($document)
 
     } | Format-List
 
 
 
[void]$application.quit()
 
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($application)

I cannot figure out how to format the hyperlink address correctly in order for insertdoc to work correctly. Also there is something strange things going on with the loops. Overall I'm confused as I have never used powershell before. Any help out there


Viewing all articles
Browse latest Browse all 13067

Trending Articles