尝试编写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网站能说明命令行与蝙蝠文件查询之间的区别,或者两种执行方法之间存在某些本质上的不同。
非常感谢您的帮助。丹
答案 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&...