0

バッチスクリプトを実行していて、どこかでユーザーがデータベースにアクセスする必要があります。

この時点で、vbscriptで作成されたウィンドウは、ユーザーにログインとパスワードの入力を求めるプロンプトを表示します。(OK、キャンセルボタン)

OKの後でクレデンシャルが正しい場合、バッチはplanAに従って続行されます。そうでない場合、バッチはplanBに行く他の何かを実行します。(キャンセル)の場合、バッチと上記のメニューに戻ります。

@echo off
:Ini
echo   [1] Access database
echo   [2] Main menu
echo:
set /p Quest= What do you prefer (1 / 2)?       
if not '%Quest%'=='' set Quest=%Quest:~0,1% 
if '%Quest%'=='1' goto VBS
if '%Quest%'=='2' goto BATCH
echo Invalid option, please try again
cls
goto Ini

:BATCH
echo Heading for main menu ...
goto Main

:VBS
cscript login.vbs
(...)

-続行してvbsを作成する方法は?
--ユーザー情報を取得して検証し、planAまたはplanBのバッチに戻る
方法...-そのパスワードを** **でマスクする方法は?

ヘルプは大歓迎です!

4

3 に答える 3

1

完全にvbscriptに切り替える方がよい(または、Rubyのように簡単に保ちながら、より最近の強力な別の言語のvbscriptを初めて使用するように思われるため)。バッチから開始することはすべてVbscriptでも実行できます。メニューのプロンプトとパスワードの入力ボックスを使用できます。マスクする必要がある場合は、Rob VanderwoudeのスクリプトのようにブラウザをUIとして使用してください。http:// www .robvanderwoude.com / vbstech_ui_password.php この手法を使用すると、InternetExplorerのすべてのUI/GUIとVbscriptのロジックを実行できます。

バッチアプローチを維持する場合は、Wscript.Quit Xを使用してvbsスクリプトを終了できます。ここで、xは、スクリプトの終了時にWindowsに渡すエラーレベルであり、そのエラーレベルをバッチでトラップできます。別の方法は、データの転送を行うために環境変数を設定または変更することです。最後に、スクリプトとバッチでデータをテキストファイルに簡単に書き込むことができますが、これをバッチで解析することはより困難です。

于 2012-07-27T12:50:51.587 に答える
0

以下に説明するように、興味深い代替案を見つけました http://www.computerhope.com/forum/index.php?topic=103686.0

BATCHに埋め込まれたVBSscript

@echo off
:wscript.echo InputBox("Enter your password","VBScript-Batch")
findstr "^:" "%~sf0" | findstr /i /v ":Label" >temp.vbs
for /f "delims=" %%N in ('cscript //nologo temp.vbs') do set pass=%%N 
del temp.vbs

echo You entered %pass% 

:Label1

echo continue from here

If %pass%=="ok" echo Valid Password ! & goto EOF
If %pass%=="ok" echo Invalid Password !! & goto EOF

:EOF
pause

ご覧のとおり、「」を削除すると& goto EOF、スクリプトは適切に機能します。VBS入力の「パス」をバッチに送信し、バッチは「ここから続行」をエコーし​​、そこから残りのコードが送信されます。

ただし、正常に動作していません。これを実際に機能させるための助けはありますか?

于 2012-07-27T20:01:13.433 に答える
0

別の選択肢は....

「Internet Explorer バージョン」の既存の VBSscript にコードを追加しました。

VBS SCRIPT - Password.vbs という名前 (Peter からの上記のリンクにある完全なスクリプトを参照)

strPw = GetPassword( "Please, type your password:" )
WScript.Echo "Your password is: " & strPw

Sub Submit_OnClick 
dim filesys, filetxt, FormContent
Set FormContent =  document.getElementById("strPw")
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("C:\\temp.txt", 8, True)
filetxt.WriteLine(FormContent.value)
filetxt.Close
End Sub  

バッチスクリプト

@echo off

cscript Password.vbs

findstr /B /E /M %strPw% temp.txt 
If %ERRORLEVEL% EQU 0 echo Password matched! & goto EOF
If not %ERRORLEVEL% EQU 0 echo Invalid Password !! & goto EOF

:eof
pause

ユーザーが入力ボックスに入力した情報とともに、ファイル temp.TXT を c:\ に送信する必要があります。バッチはこの入力を読み取り、設定されたパスワードと比較してコーディングを続行します...

どうすればこれを機能させることができますか?? temp.TXT は生成されません...

BATCH と VBS の達人、これらの問題を解決するための助けは本当に歓迎されます!

于 2012-07-27T20:22:16.687 に答える