【问题标题】:Returning value from VBscript to Batch file without WScript.echo将值从 VBscript 返回到没有 WScript.echo 的批处理文件
【发布时间】:2014-10-31 17:52:43
【问题描述】:

我正在尝试将变量从 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 会弹出密码。我可以在不回显的情况下传递此密码吗?还有其他命令吗?

【问题讨论】:

    标签: batch-file vbscript


    【解决方案1】:

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

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

    【讨论】:

    • 我犯了一个非常愚蠢的错误。!谢谢!
    【解决方案2】:

    当您想要隐藏用户输入的密码条目并可以将其作为变量供以后使用时,我提供了一个新元素以在您的批处理中使用。 所以,这个程序是一个混合了脚本 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%
    ::'***********************************************************************************************
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2012-05-19
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多