批处理参数解决方法以避免%

时间:2017-10-30 05:46:58

标签: batch-file

我有一个批处理脚本,它使用命令行参数来执行任务;然而,"%2"也包含在URL中,因此url也会获得粘贴的第二个命令行参数,其中%2应该是。在维护命令行参数时如何避免这种情况?一种解决方案是将命令行参数存储为变量然后销毁原始的%2,但我不确定如何实现这一点。

这是setlocal和endlocal的案例吗?如果是这样,一旦我将它们保存为变量名,我怎么能破坏命令行参数?一旦我存储它们,我也可以关闭命令行参数。关于如何做到这一点的任何想法?

我被引导到此Stack Overflow问题How can I URL-encode spaces in an NT batch file?;但是,我不确定这是否是我想要的。在这个问题中,OP似乎想要在批处理参数调用中包含URL。我希望我的批处理参数调用保持%1 =用户名,%2 =密码,%3 =全名,然后在脚本中引用它们,而不将它们粘贴到脚本中的URL中。我通过wget和"%20"访问网址。被用作空间。因此,在%2的情况下,它将粘贴我的密码参数而不是保留它"%2"。我知道这个Stack Overflow问题是正确的方向,但我无法从中提出解决方案。任何提示或帮助?

代码示例:

foo.bat foobar passwordforfoobar foobarfullname

在批处理脚本中

call wget.exe --keep-session-cookies --save-cookies="cookies.txt" --post-data="username=%1&password=%2" "www.foo.com"

call wget.exe --load-cookies=cookies.txt "www.foo.com/search=2017%20Foo%20test"

1 个答案:

答案 0 :(得分:0)

User Compo建议在网址中使用与“%% 20”配对的“开始”(而不是调用),并且代码执行完美。

call wget.exe --keep-session-cookies --save-cookies="cookies.txt" --post-data="username=%1&password=%2" "www.foo.com"

Start "" wget.exe --load-cookies=cookies.txt "www.foo.com/search=2017%%20Foo%%20test"