4

因此,我有一个 powershell 脚本,它会在特定时间发出并从站点下载文件并将其保存到我们的网络。这真的超级简单,但我有一个问题需要解决。首先,代码:

$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)")

您可以看到它访问的站点,然后它将文件存放在我们的网络上。问题是我需要根据网站上上传的日期和时间来命名文件。请参阅以下 HTML 代码:

 <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>

如何获取 powersheel 以获取该值(2013 年 7 月 5 日(上午 11:19))并在我的文件名中使用它,如下所示:July-UpdatedYYYYMMDD.txt?谢谢!

4

1 回答 1

3

如果您必须在页面上显示确切的日期/时间,则需要扭转解决方案。首先检查索引页面(您的第二个摘录来自哪里),然后使用该页面提取 URL 和时间戳,并按照您的操作进行下载,但使用新文件名。

除了...你不能用正则表达式轻松解析任意 HTML。现在,如果您知道这个 HTML 在其形成方式上是相当静态的,那么您可能会侥幸逃脱。但是,如果法院改变他们的页面,即使是最微小的一点,也要做好准备。

如果您不需要该级别的精度,则可以使用下载文件时随附的 HTTP 响应标头。从中,您可以获得Last-Modified服务器报告的日期 - 文件在服务器本身上被修改的最后日期/时间。这不一定是您在网页上看到的日期,而是他们将文件放在那里的日期(因此,如果从生产到发布有 2 小时的延迟,您可能会看到这种差异)。

R 是我用于临时文件的 RAMdisk。根据需要修复路径。

$client = New-Object system.net.WebClient;
$client.DownloadFile("http://app1.co.madison.il.us/circuitclerk/dockets/63/489641.TXT","r:\tempfile.txt");
$updated = Get-Date $wc.ResponseHeaders["Last-Modified"] -Format "yyyyMMdd";
Rename-Item -Path "r:\tempfile.txt" -NewName "r:\July-Updated$updated.txt";

如果您使用的是 PowerShell 3.0,则可以使用invoke-webrequest将文件放入内存,然后使用适当的名称将其直接写入磁盘,因为invoke-webrequest返回一个包含响应数据和标头的对象,然后您可以根据需要对其进行处理。

还有一个选择是联系法院,看看他们是否有另一种更机器友好的访问数据的方法。一个 RSS 或 XML 提要,或某种其他类型的网关,用于您正在尝试做的事情。

于 2013-07-22T16:53:10.977 回答