Powershell-Skript zum download und die Namen der Dateien
So, ich habe ein powershell-Skript, das geht zu bestimmten Zeiten und downloads von Dateien von einer Website und speichert diese in unser Netzwerk. Es ist wirklich super einfach, aber ich habe ein Problem, ich brauche Feste. Zuerst der code:
$client = new-object system.Net.Webclient
$client.DownloadFile("http://app1.co.madison.il.us/circuitclerk/dockets/63/489641.TXT","\\risokcdatp001\automated_data\PeopleInfo\DataFile\Traffic\IL\Madison\July_ $(get-date -f yyyyMMdd.TXT)")
$client.DownloadFile("http://app1.co.madison.il.us/circuitclerk/dockets/63/599256.TXT","\\risokcdatp001\automated_data\PeopleInfo\DataFile\Traffic\IL\Madison\August_ $(get-date -f yyyyMMdd.TXT)")
$client.DownloadFile("http://app1.co.madison.il.us/circuitclerk/dockets/63/429855.TXT","\\risokcdatp001\automated_data\PeopleInfo\DataFile\Traffic\IL\Madison\September_ $(get-date -f yyyyMMdd.TXT)")
Sehen Sie den Ort geht es zu und dann ist es hinterlegt die Dateien in unserem Netzwerk. Das problem ist, dass ich brauche, um den Namen der Dateien basierend auf dem Datum und der Zeit hochgeladen, das ist auf der Website. Finden Sie unter den folgenden HTML-code für diese:
<td width="65%" colspan="2">
<div align="center"><font size="3"><a href="http://app1.co.madison.il.us/circuitclerk/dockets/63/489641.TXT" target="_blank"><b>MONTH OF JULY 2013</b></a></font></div>
</td>
<td>
<div align="center"><font size="3"><b>July 05, 2013 (11:19 AM)</b></font></div>
</td>
Wie bekomme ich powersheel zu bekommen, die dem Wert (Juli 05, 2013 (11:19 AM)) und verwenden Sie es in meinem Datei-Namen wie die folgenden: July-UpdatedYYYYMMDD.txt? Danke!
- Kontrollieren Sie die HTML-Quelle?
- Nein, die Quelle ist kontrolliert durch das Gericht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie müssen das genaue Datum/Uhrzeit auf der Seite angezeigt, Sie brauchen, um die Lösung herum. Starten Sie durch die Untersuchung der index Seite (wo Ihr im zweiten Auszug kamen), dann arbeiten Sie mit, dass zum extrahieren der URLs und Zeitstempel, und download-wie Sie tun, aber mit dem neuen Datei-Namen.
Außer...man kann nicht leicht Parsen beliebiger HTML mit regulären Ausdrücken. Nun, wenn Sie wissen, dass dieser HTML-Code ist ziemlich statisch, wie es gebildet wird, können Sie wahrscheinlich Weg mit ihm. Aber seien Sie bereit, für Dinge zu brechen, wenn das Gericht die änderungen Ihrer Seite, selbst das kleinste bisschen.
Wenn Sie don ' T brauchen dieses Maß an Genauigkeit, Sie können den HTTP-Antwort-Header, die zusammen mit der Datei, wenn Sie es herunterladen. Aus dieser können Sie die
Last-Modified
Datum-wie berichtet-von der server - das Letzte Datum/Uhrzeit der Datei geändert wurde, auf dem server selbst. Dies ist nicht unbedingt das Datum, an dem Sie sehen die web-Seite, sondern wenn Sie die Datei gibt (also wenn es einen 2-stündigen lag-von der Produktion bis zur Veröffentlichung, sehen Sie, dass die Differenz).R ist mein RAMdisk verwende ich für die temp-Zeug. Fixieren Sie Ihre Pfade wie erforderlich.
Wenn Sie wurden mit Hilfe von PowerShell 3.0, die Sie nutzen könnten
invoke-webrequest
um die Datei in den Speicher, dann Schreibe es direkt auf die Festplatte mit dem entsprechenden Namen, wieinvoke-webrequest
gibt ein Objekt zurück, die den response-Daten und Header, die kannst du dann behandeln wie nötig.Immer noch eine andere option wäre, an den Hof und sehen, wenn Sie eine andere, mehr Maschine-freundlich-Methode der Zugriff auf die Daten. Ein RSS oder XML-feed, oder eine andere Art von gateway, die gemeint ist für das, was Sie zu tun versuchen.