VBA sendkeys方法里面如何包含%

hongkong000 2011-08-03 10:28:42
我要实现通过VBAtelnet到一个主机,然后从那个主机ftp到另一个主机,然后下载东西。其中用到一些代码如下:
echo sh.SendKeys "set today=%date:~0,4%%date:~5,2%%date:~8,2%{ENTER}">>telnet_tmp.vbs
echo sh.SendKeys "mkdir %today%{ENTER}">>telnet_tmp.vbs
echo sh.SendKeys "cd %today%{ENTER}">>telnet_tmp.vbs

我想把today变量放到SendKeys里面发送到bat里面执行,为什么上面红色字体的变量到生成的telnet_tmp.vbs
里面就不显示出来了呢,我想它在telnet_tmp.vbs里面还是输出是%today%的,这应该怎么办啊?谢谢各位高手来指点,不胜感激!
...全文
907 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2011-08-03
  • 打赏
  • 举报
回复
echo sh.SendKeys "set today=%%date:~0,4%%%%date:~5,2%%%%date:~8,2%%{ENTER}">>telnet_tmp.vbs
echo sh.SendKeys "mkdir %%today%%{ENTER}">>telnet_tmp.vbs
echo sh.SendKeys "cd %%today%%{ENTER}">>telnet_tmp.vbs
hongkong000 2011-08-03
  • 打赏
  • 举报
回复
我自己摸索到原因了,原来的我程序是先从bat到VBScript,然后再从VBScript运行到bat程序,经过多个转折。从bat到VBS的字符串解析是,在%前面加%来保留那个%;从VBS到bat的时候的字符串解析是,加{}来保留%,所以我程序的一开始应该写成

echo sh.SendKeys "set today=%date:~0,4%%date:~5,2%%date:~8,2%{ENTER}">>telnet_tmp.vbs
echo sh.SendKeys "mkdir {%%}today{%%}{ENTER}">>telnet_tmp.vbs

感谢关注过本贴的人!
hongkong000 2011-08-03
  • 打赏
  • 举报
回复
噢,不好意思,我一开始说错了,“我想它在telnet_tmp.vbs里面还是输出是%today%”,这句话虽然实现了,但是到了bat运行的时候,不会自动替换变量了。比如最后这个变量是20110803,那它运行telnet_tmp.vbs之后的结果应该把%today%替换成20110803才对。但是结果却不是。
hongkong000 2011-08-03
  • 打赏
  • 举报
回复
不行啊,加个%我也试过,昨天只是没在定义变量的时候加。刚所有地方都加了,telnet_tmp.vbs输出的结果是:
sh.SendKeys "set today=%date:~0,4%%date:~5,2%%date:~8,2%{ENTER}"
sh.SendKeys "mkdir %today%{ENTER}"
sh.SendKeys "cd %today%{ENTER}"

奇怪的是
echo sh.SendKeys "echo mget TTFILE.%today%%time:~0,2%%time:~3,2%* >>login.ftp{ENTER}">>telnet_tmp.vbs
这样子的时候.%today%到了telnet_tmp.vbs是空的,而%time:~0,2%%time:~3,2%却能正常输出。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧