欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

UU'S T&T

TIPS AND TROUBLESHOOTS FOR WINDOWS

公告

  • 本Blog站点上的任何言论仅代表个人观点,与其所在的公司没有任何关系。本Blog站点的内容是按原样提供的,作者与其公司并不对其提供任何种类的担保。此外还否认所有暗示的保证,包括但不局限于在任何试销性或某一特定用途的适用性方面的暗示保证。由于本站内容的使用或性能表现带来的全部风险将由使用者自己承担。任何由于使用或无法使用本站内容而带来的损失(包括但不局限于商业利润、业务中断、业务信息或其他财产上的损失),即使在 本站作者曾经被提醒可能出现这些损失的情况下,本站 及其作者或涉及内容创建的任何其他人等对任何上述的损失概不负责。
    ·本BLOG的内容均属技术交流之用,本人对所发表的文章、图片、随笔保留一切权利。
    如文章、图片、随笔转载请注明:
    作者姓名:尤扬
    文章来源URL:
    http://blogs.itecn.net/blogs/youyang
    同时请通过EMAIL通知本人:
    youyang1983◎hotmail.com
    ·如果通过EMAIL与我联系,并最终解决的问题,我将发表于本BLOG进行技术分享,如果涉及隐私或有特殊要求请于EMAIL中说明!
    本人联系方式:
    MSN ID:youyang1983◎hotmail.com(常用)
    QQ ID:85836514
    EMAIL:v-yayou@microsoft.com
    ·技术就是无条件共享


    2005年7月 Microsoft MVP for Windows-Shell\User
    2006年7月 Microsoft MVP for Windows-Shell\User
    2007年7月 Microsoft MVP for Windows-Shell\User

Microsoft

朋友的网站

脚本-文件夹拷贝

VBScript要拷贝文件或者是文件夹的功能是很好实现的,还是利用我上次提到的Scripting.FileSystemObject,在这个对象中有CopyFile和CopyFolder方法,语法也很简单在Windows Script V5.6 Documentation中的定义:

object.CopyFolder ( source, destination[, overwrite] );

object.CopyFile ( source, destination[, overwrite] )

一个简单的示例:

FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"
 
 
回到主题上面来:
今天在新闻组里面看到这样一个帖子:
 
本附件是B2的一个插件所需要的文件,在B2退出时会自动运行。目的是在B2退出时导出B2的设置为一个注册表文件。
在一下次运行B2时又有一个文件能够导入先前导出的注册表文件。请问谁能够帮我在附件的文件中增加几句复制某个
文件夹中的内容到U盘的代码。本附件文件现在就是在U盘上的。谢谢!
脚本的内容(附件):
Dim FullName, ScriptName, RegName
FullName = WScript.ScriptFullName ScriptName = WScript.ScriptName RegName = Left(FullName,Len(FullName)-Len(ScriptName)) & "Reginfo.Reg" '以下两句是保存 Becky 的设置 Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.run("regedit /E " &RegName& " HKEY_CURRENT_USER\Software\RimArts")
分析一下,写这个脚本的主要难度在于如何获得U盘的盘符,如果有盘符了,那么用上面提到的CopyFolder方法可以很轻松的实现.
但是,如何准确获得U盘的盘符让我思考了很久(如果大家有好写法在评论里面写一下,Thanks),后来注意到这个帖子的这句话本附件文件现在就是在U盘上的.
^_^,看来解决问题的方法就要出现了!
 
OK,让我们先来分析一下原来脚本的功能:
定义三个变量Fullname,ScriptName,RegName:
Dim FullName, ScriptName, RegName 
将三个变量赋值:
 FullName = WScript.ScriptFullName
ScriptName = WScript.ScriptName
RegName = Left(FullName,Len(FullName)-Len(ScriptName)) & "Reginfo.Reg"
 
FullName=WScript.ScriptFullName
这句话是利用WScript对象的ScriptFullName属性,WScript.ScriptFullName
返回的是这个脚本的完整文件名,比如:C:\TEST\TEST.VB,
ScriptName = WScript.ScriptName
这句话则是利用了WScript对象的ScriptName属性,ScriptName属性只是脚本名称,比如TEST.VB
 
有了这个两个东西,大家能否猜到要作什么?
 
有了这两个东西,可以得到存储脚本的路径的字符串,也就是FullName-ScriptName,
 
第三句
RegName = Left(FullName,Len(FullName)-Len(ScriptName)) & "Reginfo.Reg"
 
就是这个目的,只不过多了字符串操作函数,最后的"&"是VB里面的联字符,将当于把两个字符串粘在一起形成新字符串.
例如 "我叫" & "尤扬",出来的就是"我叫尤扬"
 
最后一部分:
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.run("regedit /E " &RegName& " HKEY_CURRENT_USER\Software\RimArts")
就是把构造好的字符串RegName 调用Regedit.exe写入注册表.
 
分析之后,要获得U盘路径,我也构造一个路径字符串就可以了,然后可以让用户输入一个源文件夹的路径(inputbox部分代码实现)
这样用CopyFolder方法就可以实现脚本的功能了!
 
构造出来的字符串其实就是Regname 去掉后面的& "Reginfo.Reg"部分
对了,要知道字符串的值怎么办?
 
我用这个方法,在VB中"'"代表注释,后面的句子就没有作用了,而MSGBOX是VBscript的对话框,
比如 MsgBox "测试" 就会弹出一个对话框,里面是"测试".
 
要获得上面脚本的
FullName值,可以这样写:
 
Dim FullName, ScriptName, RegName

FullName = WScript.ScriptFullName
 msgbox fullname
 
  'ScriptName = WScript.ScriptName
'RegName = Left(FullName,Len(FullName)-Len(ScriptName)) & "Reginfo.Reg"

'以下两句是保存 Becky 的设置
'Set WshShell = Wscript.CreateObject("Wscript.Shell")
'WshShell.run("regedit /E " &RegName& " HKEY_CURRENT_USER\Software\RimArts")
这样就会弹出对话框显示Fullname的值.
 OK,主要的东西都说完了,看看我写出来的脚本吧,还请脚本高手们多多指教(我是刚刚学习写脚本)
Dim FullName, ScriptName, RegName ,CopyFileToPath,CopyFileFromPath,fso
FullName = WScript.ScriptFullName ScriptName = WScript.ScriptName RegName = Left(FullName,Len(FullName)-Len(ScriptName)) & "Reginfo.Reg" 'youyang added below CopyFileToPath = Left(FullName,Len(FullName)-Len(ScriptName)) '以下两句是保存 Becky 的设置 Set WshShell = WScript.CreateObject("Wscript.Shell") WshShell.run("regedit /E " &RegName& " HKEY_CURRENT_USER\Software\RimArts") 'youyang create 复制文件夹内容到U盘 '说明:因为这个脚本文件是存储在U盘上面的,所以以下编写都是基于这个前提,如果改变 '脚本运行将产生错误! CopyFileFromPath = InputBox("path") Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFolder CopyFileFromPath,CopyFileToPath
Posted: 2005年7月8日 13:43 作者 youyang
归档在:

评论

youyang 说:

越来越像joycode了
# 七月 8, 2005 15:49

youyang 说:

呵呵,说真的,脚本这个东西,我感觉是计算机管理和开发的完美结合,一个脚本要实现它的功能首先要了解解决这个问题需要用到什么原理(IT PRO)的知识,但是具体实现就要用到开发的技巧了。我感觉广大IT PRO如果能了解一些开发技巧来说,对解决问题还是有好处的。正好我现在也刚刚起步,何不写一个关于脚本的从0开始的主题?大家一起进步呢?不过说,把代码写上去就有点太占篇幅了,这个以后我会注意
# 七月 9, 2005 16:31

youyang 说:

呵呵,还好这里有几位大师级IT Pro顶着。。。要不我就看不懂了,不来了
# 七月 9, 2005 16:31
禁止匿名发表评论