今早接到山青院电话,说需要一个修改DNS为校内DNS,并且清空IE临时文件的脚本,想都没想,用批处理写了一个:
rem programed by Kaisir
@echo off
echo 本脚本的作用为修改您的DNS为山东青年政治学院专用DNS 222.194.76.2 同时帮您清除了电脑中的临时文件。若有疑问,请致电网络中心。
pause
echo 修改DNS中...
netsh interface ip set dns "本地连接" source=static addr=222.194.76.2
echo DNS已经修改成功,接下来将开始清空ie临时文件...
pause
echo 清除临时文件中...
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\*.*"
echo 全部操作已成功完成!感谢您的使用。
pause你瞧,思路很简单,用netsh把dns改了就是了,因为要适应Win7跟Xp临时目录的不同,于是删除语句写了两遍。
但是,仔细想想,这个脚本有很多问题,
1)若用户有多块网卡,这个脚本只会修改“本地连接”的那一个。
2)若用户自己手动修改了临时文件的位置,则这个脚本也无能为力。
于是,有了下面这个vbs版的脚本。
'Program By Kaisir
Const T_NEWDNS1 = "222.194.76.2" 'DNS1
Const T_NEWDNS2 = "8.8.8.8" 'DNS2
set os=createobject("wscript.shell") '把wscript脚本执行外壳特性赋予给 os变量
lret = MsgBox ("本脚本可以帮助您修改DNS为山东青年政治学院内部DNS并清空浏览器临时文件,是否运行?",vbYesNo)
if lret=vbYes Then
strWinMgmt="winmgmts:{impersonationLevel=impersonate}"
Set NICS = GetObject( strWinMgmt ).InstancesOf("Win32_NetworkAdapterConfiguration")
For Each NIC In NICS
If NIC.IPEnabled Then '检索所有启用的网卡
NIC.SetDNSServerSearchOrder Array(T_NEWDNS1,T_NEWDNS2)
End If
Next
'开始执行清空临时文件
net_temp=os.regread("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\cache") '---通过读取注册表特殊位置获知系统ie浏览器的缓存文件夹位置,并赋值给变量net_temp
MsgBox(net_temp)
'删除目录下的所有文件及文件夹
Const DeleteReadOnly = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(net_temp&"\*.*"), DeleteReadOnly
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSubfolders2 = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='" & net_temp & "'} " _
& "Where AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")
For Each objFolder2 in colSubfolders2
objFSO.deleteFolder objFolder2.name , DeleteReadOnly
Next
MsgBox("所有操作已成功执行!")
else
end if这个就比较智能了,通过winmgmts获取系统中的网卡列表,然后遍历启用的网卡,然后进行修改。而临时文件部分,也是通过读取注册表“HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\cache”项的键值来获取文件夹位置。之后通过创建的fso对象的相应方法给他干掉~



kaisir犀利的很啊。吼吼
swappy其不是更犀利,你不是说年前回来的么?也木回来?
调用过程(Sub)时不能使用括号
我写的时候还想会不会把你给招来哩~
我没有调用sub的地方啊?
MsgBox(“所有操作已成功执行!”)
网上查了一下,明白了,使用MsgBox时若没有返回值,则作为sub子程序,这时候若当做函数使用需要用call显式的调用。感谢Demon,又让我学了一些知识 : )