2014-10-29 111 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% 
::'***********************************************************************************************