VBscript的批处理解析

VBscript的批处理解析,vbscript,batch-processing,batch-file,Vbscript,Batch Processing,Batch File,我从链接中复制了一个VBScript 在现有VBSSCcript中,我添加了“Internet Explorer版本”的代码: WS-SCRIPT-named Password.vbs(请参阅上面链接中的完整脚本) strPw = GetPassword( "Please, type your password:" ) Sub Submit_OnClick Const ForWriting = 2 Dim filesys, filetxt, FormContent Set FormConte

我从链接中复制了一个VBScript

在现有VBSSCcript中,我添加了“Internet Explorer版本”的代码:

WS-SCRIPT-named Password.vbs(请参阅上面链接中的完整脚本

strPw = GetPassword( "Please, type your password:" ) 

Sub Submit_OnClick
Const ForWriting = 2
Dim filesys, filetxt, FormContent
Set FormContent = document.getElementById("strPw")
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("c:\temp.txt", ForWriting, True)
filetxt.WriteLine(FormContent.value) 
filetxt.Close
End Sub   
批处理脚本

@echo off 

SET VALIDPASSWORD=1234

wscript Password.vbs

findstr %VALIDPASSWORD% c:\temp.txt
if ERRORLEVEL 1 (
     echo Incorrect password.
     goto :EOF
 ) else (
     echo Password correct. 
)

echo Batch continues from here
pause

:EOF
exit /b
文件temp.TXT应与用户在inputbox上键入的信息一起发送到c:\。批处理将读取此输入并与设置的密码进行比较,然后继续编码

我怎样才能让它工作??temp.TXT不会生成一个如此等等的


BATCH和VBS专家们,欢迎为解决这些问题提供任何帮助

如果未创建
C:\temp.txt
,则第一个问题不是批处理文件

您链接的文章的作者提到此代码在Win7上不起作用。我手头没有一台非Win7机器可以测试,但我怀疑IE是否有权限写入C:驱动器的根目录(他的代码没有这样做)。另一种可能是
Password.vbs
与批处理文件不在同一路径中。但是,如果是这样的话,您将收到一条错误消息

既然这将从命令行运行,为什么不尝试修改他发布的更简单的WScript版本呢?假设这是由非管理员运行的,并且取决于运行它的操作系统,您将需要使用用户有权写入的目录(例如,
%TEMP%\TEMP.txt

话虽如此,你还会遇到一些问题。首先,您的
OpenTextFile
调用使用
进行显示
模式(这里是'8')。这意味着您的temp.txt文件将保存用户输入的所有答案。这也意味着,当您进行
查找时,如果有人输入了正确的密码,检查将成功。最好使用
来编写
,因此每次都是新生成的。有关更多信息,请参阅

此方法不是处理密码的安全方法。首先,用户可以读取存储有效密码的批处理文件的内容,甚至更简单的是,他们可以看到如果密码正确会发生什么。但如果必须这样做,我建议您将批处理文件更改为以下内容:

@echo off
REM This file assumes that you switch to a wscript version 
REM and use the recommendations I gave.

SET VALIDPASSWORD=IAmTheRightPassword

wscript Password.vbs
findstr %VALIDPASSWORD% %TEMP%\temp.txt
if ERRORLEVEL 1 (
    echo Incorrect password.
    goto :EOF
) else (
    echo Password correct.
)
REM Here's where you put whatever you were going to do if 
REM the password was correctly entered.

您是否创建了一个表单,其中包含一个名为“strPw”的文本框和一个名为“submit”的提交按钮?是的,我创建了。请参阅上面链接上的完整脚本。我没有修改Vanderwoud的脚本,只是在其原始脚本的顶部添加了上面的代码。在编写temp.txthhello标记时仍然存在问题,我已经阅读了MSDN文章,并按照您的建议编辑了WSscript和批处理。我仍然在使用未经修改的Vanderwoude的Internet Explorer脚本。我刚刚在他的脚本顶部添加了上面WSscript中描述的代码。仍然不起作用。在输入框中键入密码后,不会创建我的temp.txt文件。它说“Findstr无法打开temp.txt”。“无效密码”。批处理文件和vbs文件位于同一位置(c:\drive)。我是家里计算机的管理员。您使用的是哪个版本的Windows?我会尝试通过删除脚本的IE部分来排除故障。只需给strPw分配一个值,并从子对象中取出(大部分)其余代码,使其直接运行:
strPw=“foo”
Const forwrite=2
Dim filesys,filetxt,FormContent
Set filesys=CreateObject(“Scripting.FileSystemObject”)
Set filetxt=filesys.OpenTextFile(“c:\temp.txt”,用于书写,正确)
filetxt.WriteLine(strPw)
filetxt.Close
谢谢Mark的建议。我尝试了一种不同的方法,现在可以使用了。非常欢迎您的帮助!亲切的问候。