1

解決済み: ループにスリープを追加するだけで済みました。

ログインする必要があるユーザー名とパスワードを含むテキスト ファイルがあります。このプロセスを自動化するために 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

y.

bb.ddddssgg.2222ssgg05uuudbeeeeen......hh00222l11.....tdddd.nn

00000 ll0ssssau0s000ssssss bbddddlll.ttttl......s be

.o222

b.dddddduttttt ll000buc11e000000utttt bbb.eeeeee0000seeeeee5

mmssss000000unnnttttnnn bb000..s.dsssssss.fa000000 2 .....k000.4tnnn .....bbbseeeu

.n.2te....s 7e9bbmv00000000tttteeee.mttseetnn2222222r0000000000.u.ddd0000000.111ddddge11111ssddddoo000.ssssssnnnn.uutnnn772 .bbg.......66teeb000000ee1114lrd2nsp000

4

1 に答える 1

1

あなたが試すことができる2つのこと...

  1. WScript.Sleep 100への呼び出しの後に、ループ内にへの呼び出しを追加してみてくださいSendKeys
  2. AppActivateandを使用する代わりに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

文体に関する注意事項もいくつかあります。

  • 定数は、できればスクリプトの一番上で使用する前に定義してください。これにより、後でそれらを探し出す必要がなくなり、まだ定義されていないと考える必要がなくなります。このような小さなスクリプトでは大きな問題ではありませんが、スクリプトが大きくなり始めると、後で頭痛の種になる可能性があります。
  • と一致してくださいDimstrUsernameand を定義しましたが、 、、またはstrPasswordを定義していません。変数を使用する前に、強制的に変数を定義するために使用することを常にお勧めします。スペルミスを防ぐのに役立ち、長い目で見れば多くの頭痛の種から解放されます。objFSOobjFileWshShellOption Explicit
于 2013-09-09T02:36:38.320 に答える