最近在项目中使用VBS来实现图片的批量删除和批量导入功能,但不知道为什么,只要在我机器上一运行VBS文件就提示“没有在该机执行windows脚本宿主的权限。请与系统管理员联系。”的错误。下面贴出本人的解决方法,并附上图片批量导入及批量删除的VBS代码。
如果只是因为权限问题可以查看这篇文章:
以管理员身份运行程序的vbs命令
1、检查系统是否禁止使用了脚本运行,即打开“INTERNET选项”的“安全”选项卡里“自定义级别”,看看“ActiveX空件及服务”禁用的选项。
2、运行 regsvr32 scrrun.dll,即打开运行输入CMD,输入regsvr32 scrrun.dll,再回车。
3、最关键的一步,即看看注册表里的这个位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings在右边的窗口中是不是有个名为 Enabled的DWORD键值,有的话把它删除或者把值该为 1 即可。
4、重新运行VBS文件即将正常。
VBS批量导入图片功能
'****************** Const ****************
'---- CuRsorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
'---- CuRsorLocationEnum Values ----
Const adUseServer = 2
Const adUseClient = 3
'---- Custom Values ----
Const cuDSN = "test"
Const cuUsername = "sa"
Const cuPassword = ""
'*************** main sub ******************
Call ImageExport()
'*************** define function ***********
Function ImageExport()
'on error resume next
Dim sSQL,Rs,Conn,sfzRs,sFilePath,sImgFile,xml
Dim Ados,fso,f,oShell,sErrFile,sSucFile,iErr,iSuc
Set fso = CreateObject("Scripting.FileSystemObject")
' Create Stream Object
set Ados=CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Set Conn=CreateObject ("adodb.Connection")
Conn.CuRsorLocation =adUseClient
Call Init_Connection(Conn)
Set Rs=CreateObject ("adodb.recordset")
Set sfzRs=CreateObject ("adodb.recordset")
sFilePath=WScript.ScriptFullName
sFilePath=left(sFilePath,len(sFilePath)-len(WScript.ScriptName))
ssql="SELECT RYBH, PHOTO FROM TP_ZPXX WHERE (RYBH IN (SELECT DISTINCT RYBH FROM TP_BMKM WHERE (KSZQBH = 18) AND (JFBZ = 1)))"
sfzRs.Open sSQL,Conn,adOpenForwardOnly
iSuc=sfzRs.RecordCount
'Get SFZH From DataBase and import images
while not sfzRs.EOF
sImgFile= sFilePath & sfzRs("RYBH") & ".jpg"
Ados.Open
Ados.Write (sfzRs("PHOTO").GetChunk(4500000))
Ados.SaveToFile sImgFile,1
sfzRs.MoveNext
Ados.Close
wend
sfzRs.Close
Conn.Close
'Release Object
set Rs=nothing:set sfzRs=nothing:set Conn=nothing:set Ados=nothing
msgbox iSuc & "张照片导出成功",64 ,"照片导出"
'Quit
WScript.Quit
End Function
Function Init_Connection(Conn)
on error resume next
ConnStr = "Provider=SQLOLEDB;Data Source=192.168.64.114;" & _
"Initial Catalog=VoteInfo;User Id=sa;Password=123456;timeout=50"
Conn.Open ConnStr
If Err.number Then
msgbox "数据库联接失败",16 ,"照片导出"
exit function
End If
End Function
VBS批量删除图片功能
'****************** Const ****************
'---- CuRsorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
'---- CuRsorLocationEnum Values ----
Const adUseServer = 2
Const adUseClient = 3
'---- Custom Values ----
Const cuDSN = "test"
Const cuUsername = "sa"
Const cuPassword = ""
'*************** main sub ******************
Call ImageExport()
'*************** define function ***********
Function ImageExport()
'on error resume next
Dim sSQL,Rs,Conn,sfzRs,xml
Dim Ados,fso,f,oShell,sErrFile,sSucFile,iErr,iSuc 'iSuc 文件总数
Dim PicPath,PhysicPath,DelCount '删除文件数
Set fso = CreateObject("Scripting.FileSystemObject")
' Create Stream Object
set Ados=CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Set Conn=CreateObject ("adodb.Connection")
Conn.CuRsorLocation =adUseClient
Call Init_Connection(Conn)
Set Rs=CreateObject ("adodb.recordset")
Set sfzRs=CreateObject ("adodb.recordset")
sSQL="select sPath,sFile from ScanFile"
sfzRs.Open sSQL,Conn,adOpenForwardOnly
iSuc=sfzRs.RecordCount
'Get SFZH From DataBase and import images
while not sfzRs.EOF
PhysicPath="E:\VBS删除照片小程序" '物理路径
Ados.Open
PicPath =PhysicPath & sfzRs("sPath") &"\" & sfzRs("sFile")
If (fso.FileExists(PicPath)) Then
fso.DeleteFile(PicPath)
DelCount=DelCount+1
end if
sfzRs.MoveNext
Ados.Close
if iSuc-DelCount=iSuc Then
DelCount=0
end if
wend
sfzRs.Close
Conn.Close
'Release Object
set Rs=nothing:set sfzRs=nothing:set Conn=nothing:set Ados=nothing:set fso=nothing
msgbox "共需要删除" & iSuc & "张照片,其中" & DelCount & "张照片删除成功," &iSuc-DelCount & "张照片未找到!",64 ,"照片删除"
'Quit
WScript.Quit
End Function
Function Init_Connection(Conn)
on error resume next
ConnStr = "Provider=SQLOLEDB;Data Source=192.168.64.114;" & _
"Initial Catalog=VoteInfo;User Id=sa;Password=123456;timeout=50"
Conn.Open ConnStr
If Err.number Then
msgbox "数据库联接失败",16 ,"照片删除"
exit function
End If
End Function
windows,脚本宿主,权限
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。



