Command line Wget64的问题

Command line Wget64的问题,command-line,wget,Command Line,Wget,试图编写Wget以获取和保存Vanguard定价数据。到目前为止,当我粘贴字符串时,我有两条语句可以从命令行正常工作。当我将字符串保存为bat文件时,一个有效,另一个产生意外结果。 在两个位置都正常工作的字符串是: Wget64--输出文档=C:\Users\Default\downloads\VVA\u Daily\u公文包-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%.html“” 仅在命令行中工作而不作为bat文件的字符串为: Wget64--输出文档=C:\Use

试图编写Wget以获取和保存Vanguard定价数据。到目前为止,当我粘贴字符串时,我有两条语句可以从命令行正常工作。当我将字符串保存为bat文件时,一个有效,另一个产生意外结果。
在两个位置都正常工作的字符串是: Wget64--输出文档=C:\Users\Default\downloads\VVA\u Daily\u公文包-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%.html“”

仅在命令行中工作而不作为bat文件的字符串为: Wget64--输出文档=C:\Users\Default\downloads\VVA\u Fund64\u历史-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%.html“” 有没有人能帮我写剧本,以达到预期的效果。我怀疑Vanguard网站可以区分命令行和bat文件查询之间的区别,或者这两种执行方法之间存在本质上的差异


感谢您的帮助。Dan

命令解析器在命令行和批处理文件中的行为不同。在这种情况下,主要问题是变量展开。在命令行中,当变量不包含值(未定义)时,不删除变量读取操作,但在批处理文件中删除读取操作

这意味着类似于
echo(%thisDoesNotExist%
的内容将在命令行中输出(假设变量不存在)
%thisDoesNotExist%
,而批处理文件中不输出任何内容

这和你的问题有什么关系

如果我们将您的
wget
拆分为您拥有的部分

Wget64 
--output-document="C:\Us ... y-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%.html"
                               ^........^ ^.........^ ^.........^

"https://pe ... h?radio=1& ... &beginDate=03%2F01%2F2017&endDate=12%2F31%2F2017&year=#res"
                                            ^....^                 ^....^
您可以看到解析器尝试解析变量的位置,在
output
案例中是正确的,在URL中是错误的(从命令的角度来看)

您需要转义(通过加倍转义)不属于变量读取操作一部分的百分号,例如,
…beginDate=03%%2F01%%2F2017&…