Board logo

标题: VBS怎样复制、粘贴内容? [打印本页]

作者: 随风    时间: 2011-1-24 23:57     标题: VBS怎样复制、粘贴内容?

vbs复制、粘贴内容
想实现以下功能
以bat运行a.vbs
start "" "a.vbs" zt 或 start "" "a.vbs" mt
当参数为 zt 时,将昨天的日期复制到剪贴板并粘贴
参数为 mt 时,将明天的日期复制到剪贴板并粘贴
能实现吗?
注:wscript.echo dateadd("d",-1,date) 显示的时间为 2011-1-1形似
我希望是2011-01-01形似的可以吗?

更新要求:
  或者直接运行 a.vbs zt 这样也可以
  如果接收参数太麻烦,不要参数也可以,关键是要能粘贴
  不是手动粘贴,是自动粘贴


[ 本帖最后由 随风 于 2011-1-25 00:04 编辑 ]
作者: broly    时间: 2011-1-25 01:24

以下是没有粘贴部分的代码。

粘贴是粘贴到批处理窗口吗?如果是这样,直接在窗口显示不是更方便?


  1. Dim objArgs,var,NewDate
  2. Set objArgs=WScript.Arguments
  3. var=objArgs.Item(0)
  4. Select Case LCase(var)
  5.   Case "zt"
  6.     NewDate=DateAdd("d",-1,Date)
  7.   Case "mt"
  8.     NewDate=DateAdd("d",1,Date)
  9. End Select
  10. SetClipboardText(NewDate)
  11. WScript.Quit
  12. Sub SetClipboardText(Text)   '写入信息到剪切板
  13.     Dim wsh
  14.     Set wsh = CreateObject("WScript.Shell")
  15.     wsh.Run "mshta vbscript:ClipboardData.SetData("&chr(34)& _
  16.              "text"&chr(34)&"," &Chr(34)& Text &Chr(34)& _
  17.              ")(close)",0,True
  18.     Set wsh=Nothing
  19. End Sub
复制代码

作者: 随风    时间: 2011-1-25 02:30

回复 2 楼
谢谢,
我是在输入法中使用,直接输入 zt
实际是运行vbs带 zt 参数,将结果日期直接粘贴在文本光标处
若是这参数能是数字就更好了,比如输入 zt-5 则代表是5天前的日期,mt-3 则是3天后的日期
现在关键是这个粘贴功能,不知道能实现不,不考虑“模拟按键”
作者: yhcbird    时间: 2011-1-25 10:34

这个我也想知道:),我想要实现的功能可能比这个更麻烦。。我想根据excel的里面的每一行的每一个表格的里面的内容填写对应的网上表单的内容。。。

[ 本帖最后由 yhcbird 于 2011-1-25 10:35 编辑 ]
作者: netbenton    时间: 2011-1-25 11:42

好像粘贴就是用模拟按键Ctrl + V来实现的
作者: broly    时间: 2011-1-25 12:23

  1. Dim objArgs,wsh,ary,NewDate
  2. Set objArgs=WScript.Arguments
  3. If objArgs.Count=0 Then WScript.Quit
  4. ary=Split(objArgs.Item(0),"-",-1)
  5. ReDim Preserve ary(1)
  6. Call SetDateAdd(NewDate,ary(0),ary(1))
  7. SetClipboardText(NewDate)
  8. Set wsh=CreateObject("WScript.Shell")
  9. WScript.Sleep 100
  10. wsh.SendKeys "^v"
  11. Set wsh=Nothing
  12. Sub SetClipboardText(Text)   '写入信息到剪切板
  13.     CreateObject("WScript.Shell").Run _
  14.          "mshta vbscript:ClipboardData.SetData(""text""," & _
  15.          Chr(34)& Text &Chr(34)& ")(close)",0,True
  16. End Sub
  17. Sub SetDateAdd(NewDate,strDay,strNum)
  18.   If IsEmpty(strNum) Then strNum=1
  19.   Select Case LCase(strDay)
  20.   Case "zt"
  21.     NewDate=DateAdd("d",-strNum,Date)
  22.   Case "mt"
  23.     NewDate=DateAdd("d",strNum,Date)
  24.   Case Else
  25.     WScript.Quit
  26.   End Select
  27. End Sub
复制代码

[ 本帖最后由 broly 于 2011-1-25 15:52 编辑 ]
作者: 随风    时间: 2011-1-25 16:15     标题: 回复 6楼 的帖子

谢谢,测试通过
但发现无法检测输入,晕,看来只有在输入法配置文件中定义大量的天数才行了。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2