2017-03-27 66 views
0

使用DateAdd我可以添加或减去所需的天数,但是我不知道如何获得所需格式的结果(mmddyyyy)并将其添加到使用wget下载的网址。将日期和结果添加到具有所需日期格式的批处理脚本中的url

@ECHO Off 

for /f "tokens=*" %%i in ('DateAdd -30') do set minusonemonth=%%i 
for /f "tokens=*" %%i in ('DateAdd 90') do set addthreemonths=%%i 
echo %minusonemonth% 
echo %addthreemonths% 

@ECHO Off 

call dateadd -30 
set minusonemonth=%minusonemonth% 
call dateadd 90 
set addthreemonths=%addthreemonths% 

echo %minusonemonth% 
echo %addthreemonths% 

返回的日期应设置为变量,然后添加到URL字符串,类似下面,这样我就可以使用wget下载文件:

url="http://www.example.com/load?pStartDate=${minusonemonth}&pEndDate=${addthreemonths}&pServiceID=12552" 

如何在Windows中执行此操作?它需要在计划任务中运行。

+1

枭。对于'powershell'(get-date).AddMonths(-1).ToString('MMddyyyy')“'可能更简单。你可以用'for/F'循环捕获它。有关详细信息,请参阅cmd控制台中的“help for”。或者你可以在PowerShell中编写整个代码并使用'BitsTransfer'模块来替换'wget'。示例.ps1脚本:'$ start =(get-date).AddMonths(-1).ToString('MMddyyyy'); $ end =(get-date).AddMonths(3).ToString('MMddyyyy'); $ url =“http://www.example.com/load?pStartDate=$start&pEndDate=$end&pServiceID=12552”; ipmo BitsTransfer; Start-BitsTransfer $ url'path \ to \ output.html''或类似的。 – rojo

+0

感谢Rojo的帮助!使用你的建议,我能够找到一个工作解决方案。 – mindmischief

回答

0

由于Web服务器认证用户的方式,我不得不使用Invoke-WebRequest。 BitsTransfer和WebClient不起作用,但都使用了我自己的Web服务器上的一个简单的txt文件。

$start = (get-date).AddMonths(-1).ToString('MMddyyyy'); 
$end = (get-date).AddMonths(3).ToString('MMddyyyy'); 
$url = "https://example.com/schedule/Load?pStartDate=$start&pEndDate=$end&pServiceID=1000"; 
$path = 'C:\Users\public\Documents\report.csv'; 

# use BitsTransfer (fails due to web server behavior) 
#ipmo BitsTransfer; 
#Start-BitsTransfer $url $path; 

# use WebClient (fails due to web server behavior) 
#$client = New-Object System.Net.WebClient; 
#$client.DownloadFile($url, $path); 

# use Invoke-WebRequest 
Invoke-WebRequest $url -OutFile $path; 

感谢Rojo建议使用PowerShell和足够的方向让我开始。