2014-10-29 110 views
2

我想从VBscript传递变量到批处理文件以供进一步使用。由于这个值是一个密码,我不希望它出于安全原因被回显!从VBscript将值返回到没有WScript.echo的批处理文件

的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 

这种存储在变量密码密码但VB脚本弹出因为WScrip.echo的密码。我可以传递密码吗?有没有其他的命令?

回答

2

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

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

+0

我做了一个非常愚蠢的错误!谢谢! – 2014-10-29 12:13:09

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% 
::'***********************************************************************************************