Wget64的问题

时间:2017-03-26 20:14:56

标签: command-line wget

尝试编写Wget以获取并保存Vanguard定价数据。到目前为止,我有两个语句,当我粘贴字符串时,它们都可以从命令行正常工作。当我将字符串保存为bat文件时,一个工作,另一个产生意外结果 在两个地方都能正常工作的字符串是: Wget64 --output-document = C:\ Users \ Default \ downloads \ VVA_Daily_Portfolio-%DATE:〜-4% - %DATE:~4,2% - %DATE:~7,2%.html“{{3} }“

仅在命令行中起作用而不是作为bat文件的字符串是: Wget64 --output-document = C:\ Users \ Default \ downloads \ VVA_Fund64_History-%DATE:〜-4% - %DATE:~4,2% - %DATE:~7,2%.html“{{3} }” 有人可以帮我写脚本,以达到预期的效果。我怀疑Vanguard网站能说明命令行与蝙蝠文件查询之间的区别,或者两种执行方法之间存在某些本质上的不同。

非常感谢您的帮助。丹

1 个答案:

答案 0 :(得分:0)

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

这意味着像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&...