已解决:我所要做的只是为循环添加一个睡眠。
我有一个文本文件,其中包含需要登录的用户名和密码。我正在尝试制作一个VBScript文件来自动执行此过程。文本文件的语法是
username
password
username
password
etc etc
并且共有738行。
我目前的代码是
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Users\Jacob\Desktop\logins.txt", ForReading)
Set WshShell = WScript.CreateObject("WScript.Shell")
Const ForReading = 1
Dim strUsername
Dim strPassword
wshshell.AppActivate "Notepad"
Do Until objFile.AtEndOfStream
strUsername = objFile.ReadLine
strPassword = objFile.ReadLine
wshshell.sendkeys strUsername
wshshell.sendkeys "~"
wshshell.sendkeys strPassword
wshshell.sendkeys "~"
Loop
我只是通过将其写入空白文本文件来确保它的工作原理。 (稍后记事本将被登录可执行文件替换,我已经知道该部分有效)。
代码正常工作,直到它到达文本文件的第221行,然后它才会中断。它导出一堆随机垃圾,然后停止。
非常感谢任何帮助。
编辑: 这是写入文本文件末尾的垃圾文本。你可以看到仍然有遗留物应该出现。
。[编辑用户名] .22bssddd2222ent000.2wlllkarsstt00 .... 000h8b6b99b88uub2
..... ttttte0000mp00 ... gh.rrlll00225..gbu ..... 0022sdg [编辑密码] .proeflussssddd ..22le.pu6 .... 225500s.gl.iteee.55.uuu.hmadttn..0dl
tsssssbeeee0000nsssss0000000ssssdssdbuuuz22dddd000buuu.jj2222 B4 .... 3 .j00000000b
收率
bb.ddddssgg.2222ssgg05uuudbeeeeen ...... hh00222l11 ..... tdddd.nn
00000 ll0ssssau0s000ssssss bbddddlll.ttttl ......小号 是
.o222
b.ddddddutttt ll000buc11e000000utttt bbb.eeeeee0000seeeee5
mmssss000000unnnttttnnn bb000..s.dsssssss.fa000000 2 ..... k000.4tnnn ..... bbbseeeu
.n.2te ....小号 7e9bbmv00000000tttteeee.mttseetnn2222222r0000000000.u.ddd0000000.111ddddge11111ssddddoo000.ssssssnnnn.uutnnn772 .bbg ....... 66teeb000000ee1114lrd00002222nsp
答案 0 :(得分:1)
你可以尝试两件事......
WScript.Sleep 100
后,尝试在循环中添加对SendKeys
的来电。AppActivate
和SendKeys
。这将排除问题是否由SendKeys
引起。无论如何,使用SendKeys
和这么多数据相当危险。如果记事本获得焦点并且键开始被定向到另一个应用程序时出现任何问题,那么它可能会产生一些非常非常无意的结果。 以下是要写入文本文件的脚本的修改副本
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("logins.txt", ForReading)
Set objFile2 = objFSO.OpenTextFile("logins2.txt", ForWriting, true)
Set WshShell = WScript.CreateObject("WScript.Shell")
Const ForReading = 1, ForWriting = 2
Dim strUsername
Dim strPassword
Do Until objFile.AtEndOfStream
strUsername = objFile.ReadLine
strPassword = objFile.ReadLine
objFile2.Write strUsername & vbCrLf
objFile2.Write strPassword & vbCrLf
Loop
还有几个风格笔记:
Dim
一致。您定义了strUsername
和strPassword
,但未定义objFSO
,objFile
或WshShell
。我总是建议使用Option Explicit
强制您在使用之前定义变量。它可以帮助您避免拼写错误,从长远来看可以为您节省很多麻烦。