我被困在以下脚本中,请帮助
' Discover Current Drive Path
curDrv = objFSO.GetParentFolderName(WScript.ScriptFullName) 'Drive Path
ulpath = curdrv & "\Locker"
propath = curdrv & "\Control_Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
passFile = curdrv & "\pass.txt"
If objFSO.FolderExists (propath) Then call Unlock
If Not objFSO.FolderExists (ulpath) Then
objFSO.CreateFolder (ulpath)
MsgBox "Folder Created Successfully" , vbInformation, "Process Success" & WScript.Quit
end if
If objFSO.FolderExists (ulpath) Then call Lock
WScript.Quit
Sub PassCreate
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
IF PSCR="" then MsgBox "Password cannot be blank" , vbCritical, "Faulty"
IF PSCR="" & objFSO.FileExists(passFile) then
objFSO.DeleteFile(passFile)
end if
IF PSCR="" then call PassCreate
Set objFile = objFSO.CreateTextFile(passFile,True)
objFile.Write PSCR & vbCrLf
objFile.Close
End Sub
Sub Unlock
PSW = InputBox ("Please Enter your 10 digit Password. Example : 9867123456")
Set objFile = objFSO.OpenTextFile(passFile)
Do Until objFile.AtEndOfStream
strLine= objFile.ReadLine
Loop
objFile.Close
If not PSW=strLine Then MsgBox "Wrong Password" , vbCritical, "Illegal Operation" & WScript.Quit
objFSO.MoveFolder propath , ulpath
Set FO = objFSO.GetFolder(ulpath)
FO.Attributes = FO.Attributes AND 0
MsgBox "Folder Unlocked Successfully" , vbInformation, "Success Operation" & WScript.Quit
End Sub
Sub Lock
Message = "Are you Sure you want" & vbCr & vbCr
Message = Message & "to Lock the folder ?" & vbCr & vbCr
X = MsgBox(Message, vbOKCancel, "Confirmation")
If not objFSO.FileExists (passFile) then call PassCreate
Select Case X
Case vbOK
objFSO.MoveFolder ulpath , propath
Set objFolder = objFSO.GetFolder(propath)
Set FL = objFSO.GetFolder(propath)
FL.Attributes = FL.Attributes XOR -1
MsgBox "Folder Locked Sucessfully." , vbInformation, "Process Success"
Case vbCancel
MsgBox "Nothing Done." , vbExclamation, "Process Aborted"
End Select
End Sub
在sub passcreate下,如果密码为空,则第一次没有任何内容写入pass.txt,因此没有创建密码。我想防止意外的空白密码创建。我不知道如果取消选择取消,如何取消脚本执行两个输入框。
答案 0 :(得分:0)
在您检查密码是否为空的情况下使用exit sub
,例如:
IF PSCR="" then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
Exit Sub
End If
答案 1 :(得分:0)
为什么不在这样的循环中询问密码。
PSCR = ""
DO While PSCR = ""
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
IF PSCR="" then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
END IF
Loop
这样,用户必须输入密码才能继续运行脚本。
编辑: 这应该做你想做的一切。
Sub TheScript
password = GetPassword
If password = "" Then Exit Sub
MsgBox password
End Sub
Function GetPassword
PSCR = ""
DO While PSCR = ""
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
If IsEmpty(PSCR) Then
MsgBox "Cancel Pressed"
Exit do
ElseIf PSCR = "" Then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
End If
Loop
GetPassword = PSCR
End Function
答案 2 :(得分:0)
第一个很简单,并保存为.bat(密码为5953,只需在脚本中查找并进行更改即可。)
cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:LOCK
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
goto End
:UNLOCK
cls
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==5953 goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
goto End
:FAIL
ECHO.
echo Invalid password.
ECHO.
echo Want to give it another try ???(Y/N)
set/p "cho=>"
if %cho%==Y goto UNLOCK
if %cho%==y goto UNLOCK
if %cho%==n goto SHUTDOWN
if %cho%==N goto SHUTDOWN
:MDLOCKER
md Locker
echo Locker Folder was created successfully.
goto End
:SHUTDOWN
Shutdown.exe -s -t 10
cls
msg * Wrong Password Bro.
:End
1。是这样的.BAT文件吗?
@echo off
Shutdown.exe -s -t 10
cls
msg * your message here!
2。是这样的txt文件吗?
.LOG
这是另存为vbs的主文件。
Option Explicit
Dim sapi,x,filler,T,objSHL,n,i,KContinue
set x=createobject("wscript.shell")
Set sapi=CreateObject("sapi.spvoice")
Set objSHL = CreateObject("WScript.Shell")
sapi.Speak "Please enter your access key"
KContinue = True
Do While KContinue
filler = inputbox("Enter your Access key.")
KContinue = False
if filler= "2648" then
call a
elseif filler= "" then
call b
else
call c
end if
Loop
sub a
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Granted"
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
wscript.sleep 500
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "access granted"
end sub
sub b
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Denied, User gave no input"
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "Access Denied, User gave no input"
sapi.Speak "You have ten seconds left on this PC"
call tb
end sub
sub c
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Denied, User input"
x.sendkeys "{enter}"
x.sendkeys filler
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "Access Denied, User input"
sapi.Speak filler
sapi.Speak "You have ten seconds left on this PC"
call tb
end sub
sub tb
n=10
For i = 1 To n
sapi.Speak(n)&("select yes to try the password again")
T = objSHL.Popup("Want to try again? You have "&n&" seconds",1,"title",vbYesNo)
If T = vbYes Then
sapi.Speak"YOU MAY TRY AGAIN"
KContinue = True
Exit for
ElseIf T = vbNo Then
sapi.Speak("you have selected no, no pc access for you")
x.Run ("""C:\Finnished Scripts\Shutdown computer.bat""")
Exit for
End If
n=n-1
If n = 0 then
sapi.Speak("you have selected nothing, no pc access for you")
x.Run ("""C:\Finnished Scripts\Shutdown computer.bat""")
End If
Next
end sub