对于一篇论文,我试图通过 API 重复下载 XML。它必须在很长一段时间内每隔一小时或三个小时进行一次。
我找到了一些可以下载一次的方法,例如使用 PowerShell:
powershell.Exe -command "& {$client = new-object System.Net.WebClient;$client.DownloadFile('http://exampleapi.uk?key=examplekey','C:\location\APIcall.xml')}"
但是,是否可以设置动态文件名,以便每次下载都有一个新名称并且文件不会被覆盖?理想情况下,他们会在他们的名字中得到一个时间戳,但只要没有数据被覆盖,我就会很高兴。
注意:我是一名 GIS 学生,有一些 SQL 和 C++ 经验,但没有任何高级知识。我不能使用需要数小时学习的答案来了解它是否可以完成,比如 libcurl 或 gnuwin,我只需要解决这个问题并继续使用数据进行映射项目。
DownloadFile()
您可以在调用该方法之前创建一个文件路径和文件名,使用Join-Path
.就像是
在这里,我使用
-f
Format 运算符将 DateTime对象从Get-Date
转换为时间戳字符串{0:yyyy-MM-dd HH_mm_ss}
。当然,您可以采用不同的格式设置日期,但请确保它不包含无效的文件名字符,例如:
,/
或\
Get-Date将返回当前数据和时间作为DateTime类型。您可以应用多种预定义或自定义格式。
这是使用
-f
格式运算符使用预定义的“s”(可排序)格式的示例:输出:
这里的视力低下 - 甚至没有注意到可排序格式中的冒号(文件名中的非法)。这是使用自定义格式字符串的更好示例。正如OP每隔几个小时所说的那样,从时间中删除秒数:
输出: