<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Hyperlink Errors in Data Management Questions</title>
    <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509492#M28933</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Elizabeth,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wasn't exactly sure of your environment/set-up, so I just wrote a PowerShell script, which can be executed outside of ArcGIS. It should be installed by default on Windows 7+. The script I wrote uses PowerShell 4, but the only change for PowerShell 2 should be the commented out line exporting to CSV, I believe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You would basically need to export your table as a CSV, open notepad, paste the script and make any needed enviro changes, save as a .ps1, then run the script (here's an example of how to do that - &lt;A href="http://stackoverflow.com/questions/2035193/how-to-run-a-powershell-script" title="http://stackoverflow.com/questions/2035193/how-to-run-a-powershell-script"&gt;windows - How to run a PowerShell script? - Stack Overflow&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wes has a Python script you can just run in ArcMap that does exactly what you want, that is, check if the path on disk doesn't exist. I would need to adjust the PowerShell script to check for paths since I thought you were looking for web hyperlinks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Jul 2016 18:59:36 GMT</pubDate>
    <dc:creator>ChrisSmith7</dc:creator>
    <dc:date>2016-07-14T18:59:36Z</dc:date>
    <item>
      <title>Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509487#M28928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm looking for a way to find all errors in a table with hyperlinks, such as wrong paths or missing photos, without having to click on each individual point to make sure the hyperlink functions. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jul 2016 18:57:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509487#M28928</guid>
      <dc:creator>ElizabethMinnick</dc:creator>
      <dc:date>2016-07-13T18:57:02Z</dc:date>
    </item>
    <item>
      <title>Re: Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509488#M28929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Elizabeth,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a PowerShell script you can use:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;#csv path; input must be in this schema: ID,URL,NOTES - format your input this way, or adjust script
$path = "C:\Users\YOU\Desktop\YOUR_CSV.csv" #in csv (you create)
$outPath = "C:\Users\YOU\Desktop\YOUR_OUT_CSV.csv" #out csv (don't create this... let script create for you)
$csv = Import-Csv -path $path
$OutArray = @()

function processURL($inURL){
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Create request
&amp;nbsp;&amp;nbsp;&amp;nbsp; $HTTP_Request = [System.Net.WebRequest]::Create($inURL)

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get response
&amp;nbsp;&amp;nbsp;&amp;nbsp; $HTTP_Response = $HTTP_Request.GetResponse()

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get response integer code
&amp;nbsp;&amp;nbsp;&amp;nbsp; $HTTP_Status = [int]$HTTP_Response.StatusCode

&amp;nbsp;&amp;nbsp;&amp;nbsp; If ($HTTP_Status -eq 200) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ret_val = "OK!"
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; Else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ret_val = "CHECK ME!"
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Clean-up and return
&amp;nbsp;&amp;nbsp;&amp;nbsp; $HTTP_Response.Close()
&amp;nbsp;&amp;nbsp;&amp;nbsp; return $ret_val
}

function request($ID, $URL, $NOTES){
&amp;nbsp;&amp;nbsp;&amp;nbsp; $localResponse = processURL $URL

&amp;nbsp;&amp;nbsp;&amp;nbsp; export $ID $URL $NOTES $localResponse
}

function export($eID, $eURL, $eNotes, $eResponse){

&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj = "" | Select "ID","URL","NOTES", "RESPONSE"
&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj.ID = $eID
&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj.URL = $eURL
&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj.NOTES = $NOTES
&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj.RESPONSE = $eResponse

&amp;nbsp;&amp;nbsp;&amp;nbsp; $OutArray += $myobj
&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj = $null 

&amp;nbsp;&amp;nbsp;&amp;nbsp; #PS4 version:
&amp;nbsp;&amp;nbsp;&amp;nbsp; $OutArray | export-csv $outPath -Append
&amp;nbsp;&amp;nbsp;&amp;nbsp; #PS2 version:
&amp;nbsp;&amp;nbsp;&amp;nbsp; #$OutArray | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | Out-File -Append $outPath
}

foreach($line in $csv)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; $properties = $line | Get-Member -MemberType Properties
&amp;nbsp;&amp;nbsp;&amp;nbsp; for($i=0; $i -lt $properties.Count;$i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $column = $properties[$i]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $columnvalue = $line | Select -ExpandProperty $column.Name

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ($column.Name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ID" {$ID = $columnvalue}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "URL" {$URL = $columnvalue}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "NOTES" {$NOTES = $columnvalue}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (-Not [string]::IsNullOrEmpty($ID) -and -Not [string]::IsNullOrEmpty($URL)) { request $ID $URL $NOTES }
}&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, in my test, I used a csv like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID,URL,NOTES&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;1,&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.google.com" target="_blank"&gt;http://www.google.com&lt;/A&gt;&lt;SPAN&gt;, this is google&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;2,&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.esri.com" target="_blank"&gt;http://www.esri.com&lt;/A&gt;&lt;SPAN&gt;, this is esri&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;3,&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.microsoft.com" target="_blank"&gt;http://www.microsoft.com&lt;/A&gt;&lt;SPAN&gt;, this is microsoft&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;...and I got an output like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#TYPE Selected.System.String&lt;/P&gt;&lt;P&gt;"ID","URL","NOTES","RESPONSE"&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;"1","&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.google.com" target="_blank"&gt;http://www.google.com&lt;/A&gt;&lt;SPAN&gt;","this is google","OK!"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;"2","&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.esri.com" target="_blank"&gt;http://www.esri.com&lt;/A&gt;&lt;SPAN&gt;","this is esri","OK!"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;"3","&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.microsoft.com" target="_blank"&gt;http://www.microsoft.com&lt;/A&gt;&lt;SPAN&gt;","this is microsoft","OK!"&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:19:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509488#M28929</guid>
      <dc:creator>ChrisSmith7</dc:creator>
      <dc:date>2021-12-11T22:19:14Z</dc:date>
    </item>
    <item>
      <title>Re: Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509489#M28930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If these aren't limited to web hyperlinks, let me know and I'll update the script!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jul 2016 22:54:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509489#M28930</guid>
      <dc:creator>ChrisSmith7</dc:creator>
      <dc:date>2016-07-13T22:54:19Z</dc:date>
    </item>
    <item>
      <title>Re: Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509490#M28931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks! They are just links to a folder containing photos. I'm looking for mistakes in the path, or paths that point to a photo that didn't get copied into the folder. Can I run the script without ArcGIS Pro?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Elizabeth Minnick&lt;/P&gt;&lt;P&gt;GIS Technician&lt;/P&gt;&lt;P&gt;Town of Abingdon&lt;/P&gt;&lt;P&gt;133 W. Main Street&lt;/P&gt;&lt;P&gt;Abingdon, VA 24210&lt;/P&gt;&lt;P&gt;(276) 492-2129&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jul 2016 12:50:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509490#M28931</guid>
      <dc:creator>ElizabethMinnick</dc:creator>
      <dc:date>2016-07-14T12:50:54Z</dc:date>
    </item>
    <item>
      <title>Re: Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509491#M28932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The script below will produce an oid list of paths that don't exist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy


fc = r"your\feature\class"
fld = "yourPathField"


desc = arcpy.Describe(fc)
oidName = desc.oidFieldName


oidlist = []
flds = [oidName,fld]
with arcpy.da.SearchCursor(fc,flds) as rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists(row[1]):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oidlist.append(row[0])
print oidlist&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:19:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509491#M28932</guid>
      <dc:creator>WesMiller</dc:creator>
      <dc:date>2021-12-11T22:19:17Z</dc:date>
    </item>
    <item>
      <title>Re: Hyperlink Errors</title>
      <link>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509492#M28933</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Elizabeth,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wasn't exactly sure of your environment/set-up, so I just wrote a PowerShell script, which can be executed outside of ArcGIS. It should be installed by default on Windows 7+. The script I wrote uses PowerShell 4, but the only change for PowerShell 2 should be the commented out line exporting to CSV, I believe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You would basically need to export your table as a CSV, open notepad, paste the script and make any needed enviro changes, save as a .ps1, then run the script (here's an example of how to do that - &lt;A href="http://stackoverflow.com/questions/2035193/how-to-run-a-powershell-script" title="http://stackoverflow.com/questions/2035193/how-to-run-a-powershell-script"&gt;windows - How to run a PowerShell script? - Stack Overflow&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wes has a Python script you can just run in ArcMap that does exactly what you want, that is, check if the path on disk doesn't exist. I would need to adjust the PowerShell script to check for paths since I thought you were looking for web hyperlinks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jul 2016 18:59:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/data-management-questions/hyperlink-errors/m-p/509492#M28933</guid>
      <dc:creator>ChrisSmith7</dc:creator>
      <dc:date>2016-07-14T18:59:36Z</dc:date>
    </item>
  </channel>
</rss>

