在没有WScript.echo的情况下将值从VBscript返回到Batch文件

时间:2014-10-29 11:02:44

标签: batch-file vbscript

我正在尝试将变量从VBscript传递到批处理文件以供进一步使用。由于这个值是密码,我不希望它出于安全原因而被回应!

VBScript代码:

...
'after the above procedure, password has to be passed to batch file 
WScript.echo password

批处理文件的代码:

FOR /F "usebackq tokens=*" %%r in (`CSCRIPT "D:\PasswordCreation.vbs"`) DO SET PASSWORD=%%r
ECHO %PASSWORD%
Pause

这会将密码存储在变量PASSWORD中,但由于WScrip.echo密码,VBscripts会弹出密码。我可以通过这个密码而不回应吗?还有其他命令吗?

2 个答案:

答案 0 :(得分:2)

您没有看到VBS的输出 - FOR / F批处理语句正在吸收该输出。

屏幕输出是批处理脚本中ECHO %PASSWORD%的结果。只需删除该行。

答案 1 :(得分:1)

当您想要隐藏用户输入的密码条目时,我会在批处理中显示一个新元素,并将其作为变量供以后使用。 因此,该程序是一个混合使用脚本Batch,VBScript和HTA的混合程序。

<强> HTAPASSWORDBOX.bat

@echo off
Title G‚n‚rer un HTABOX pour cacher un mot de passe en ligne de commande Copyright Hackoo 2014
mode con cols=90 lines=3 & color 9B
Set MyVBSFile=%tmp%\%~n0.vbs
Set MyHTAFile=%tmp%\%~n0.hta
:: Créer le VBS Pour extraire et générer le code du HTA
Call :CreateMyVBS
:: Lancer Le VBS
Cscript.exe //NOLOGO %MyVBSFile%
:: Lancer Le HTA crée par le VBS
start /wait mshta.exe "%MyHTAFile%"
Del "%MyVBSFile%" & Del "%MyHTAFile%"
:: Lire le contenu du fichier %tmp%\userIn pour extraire le mot de passe tapé depuis
:: le HTABOX et le définir comme une variable
for /f %%i in (%tmp%\userIn) do set "Mypassword=%%i"
echo Votre mot de passe saisi est : %MyPassword%
Del %tmp%\userIn
pause 
Exit /b
:#Start
<html>
<head>
<title>Mot de Passe © Hackoo</title>
<hta:application id="htaid"
applicationName="Password"
border="thin"
icon="wlrmdr.exe"
borderStyle="normal"
caption="yes"
contextMenu="no"
maximizeButton="no"
minimizeButton="yes"
navigable="yes"
showInTaskbar="yes"
singleInstance="yes"
sysmenu="yes"
SCROLL="NO" 
SHOWINTASKBAR="Yes"   
SELECTION="no"
MINIMIZEBUTTON="no" 
>
</head>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES"> 
<BODY TOPMARGIN="1" LEFTMARGIN="1"><CENTER><DIV><SPAN ID="ONSCR"></SPAN></DIV></CENTER></BODY>
<script language="vbscript">
'---------------------------------------------------------------------------------------
Sub Window_OnLoad
    CenterWindow 300,150
    Call PasswordForm()
    Call TextFocus()
end sub
'---------------------------------------------------------------------------------------
Sub CenterWindow(x,y)
    Dim iLeft,itop
    window.resizeTo x,y
    iLeft = window.screen.availWidth/2 - x/2
    itop = window.screen.availHeight/2 - y/2
    window.moveTo ileft,itop
End Sub
'----------------------------------------------------------------------------------------
Sub SavePassword()
    set fs=CreateObject("Scripting.FileSystemObject")
    strFile=fs.GetAbsolutePathName(fs.BuildPath(fs.GetSpecialFolder(2),"UserIn"))
    set ts=fs.OpenTextFile(strFile,2,True)
    If PasswordArea.value <> "" Then
        ts.WriteLine PasswordArea.value
        ts.Close
        self.Close 'Pour fermer ce HTA après avoir enregistré le mot de passe comme une variable dans le fichier Userin
    else
        Msgbox "Le mot de passe est vide ! "& Vbcrlf & "SVP entrez de nouveau votre mot de passe",VbExclamation,"Mot de Passe © Hackoo"
        Location.reload(true) 'Pour recharger à nouveau ce HTA
    end if
End Sub
'----------------------------------------------------------------------------------------
Sub PasswordForm()
    Self.document.title = "Mot de Passe © Hackoo"
    Self.document.bgColor = "lightblue"
    ONSCR.InnerHTML="<center><FONT COLOR=""#FFFFFF"" SIZE=""+1"" FACE=""VERDANA,ARIAL,HELVETICA,SANS-SERIF"">Taper votre mot de passe</FONT<br>"_
    &"<input type=""password"" name=""PasswordArea"" size=""20"" onKeyUp=""TextFocus""><P>"_
    &"<input type=""Submit"" STYLE=""HEIGHT:25;WIDTH:110"" value=""OK"" onClick=""SavePassword"">"
END Sub
'----------------------------------------------------------------------------------------
Sub TextFocus
    PasswordArea.Focus 
End Sub
'----------------------------------------------------------------------------------------
</script>
</body>
</html>
:#End
::***********************************************************************************************
:CreateMyVBS
::'**********************************************************************************************
(
echo. Set fso = CreateObject^("Scripting.FileSystemObject"^)
echo. Set f=fso.opentextfile^("%~f0",1^)
echo. a=f.readall
echo. Set r=new regexp
echo. r.pattern = "(?:^|(?:\r\n))(?::#Start\r\n)([\s\S]*?)(?:\r\n)(?::#End)"
echo. Set Matches = r.Execute^(a^)
echo. If Matches.Count ^> 0 Then Data = Matches^(0^).SubMatches^(0^)
echo. WriteFileText "%MyHTAFile%",Data
echo. f.close
::'**********************************************************************************************
echo. 
echo. Function WriteFileText^(sFile,Data^)
echo.     Dim objFSO,oTS,sText
echo.     Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
echo.     Set oTS = objFSO.CreateTextFile^(sFile,2^)
echo.     oTS.WriteLine Data
echo.     oTS.close
echo.     set oTS = nothing
echo.     Set objFSO = nothing
echo. End Function 
) > %MyVBSFile%
::'***********************************************************************************************