【VBS】超级实用小实例:仅用数字编号打开任意指定文件夹(超超超级全面指南)


注意:仅限Windows系统!

Hello World!

桌面新建个txt文本,打开写上如下内容:

msgbox "Hello World!"

保存,文件后缀再改为“vbs”即可执行,
(如果没有显示后缀名,自行百度解决)
双击运行,
完美的Windows系统上的迷你小窗口!
内容就是:

Hello World!

简单的要命,有木有,哈哈哈!

1、目的

Windows系统上用最简单的方法直接创建窗口程序,
需要有常见编程语言的语法基础。
我之前没有学过vbs,
但本身是软件工程专业科班生,
具有一定的其他多种语言的编程基础。
先有实践的问题,再想解决问题,而出现的此文章,
并不是凭空捏造的问题与文章及程序。

2、需求分析

一个盘里的文件名字开头全有10以内数字编号开头,
要求弹出窗口输入一串数字编号,
便可以打开指定文件夹。
(程序是小事,
实际上如何给每个人电脑上所有文件夹合适的分类
才是根本问题!)

3、举例

弹出交互窗口输入“122”,点击确认,
即可打开文件夹地址为:
“E:\工作\1、人事\2、培训\2、实习期”。
其中,后面的顿号和汉字是任意的,
只关注文件名前面的数字即可。

4、思路

以需求的解决逻辑和一步步遇见的问题为思路,
去逐步百度搜索。
以下提供的所有的链接,
都是只要解决问题就可以,
几乎都不用全部浏览。

有编程基础的会上手的很快。

一、上手编程语言初步

(一)Visual Basic快速入门

https://blog.csdn.net/achenyuan/article/details/83987056

如果有其他编程语言基础,这个不用看,当做语法工具书查阅即可。

(二)简洁的代码编辑器推荐

Sublime Text 3
我一开始用的Notepad++,
可惜玩了半天突然不支持VB的语法高亮了???
又问度娘搜到了这个,非常棒!

1. Sublime Text 下载

地址:https://www.sublimetext.com/

2. VB代码语法高亮设置

(后来我又找不到VB了,用ASP也行)
在这里插入图片描述

3. 中文乱码或报错解决

sublime text 3支持GBK编码
https://www.cnblogs.com/wxdblog/p/7992854.html

二、创建最简单的窗口

(一)教你用怎么vbs写一个简易的对话框

https://jingyan.baidu.com/article/22fe7cedd478133002617f23.html
注意: 中文可能报错或乱码,粗暴解决,用英文即可。

(二)vbs输入框和消息框

https://jingyan.baidu.com/article/9f63fb91492403c8410f0e4b.html

(三)VBS中InputBox函数的返回值使用技巧

https://www.jb51.net/article/26809.htm

三、常见问题与操作

(一)VBS脚本一行代码太长,使用换行符

http://www.51testing.com/html/85/87885-17546.html

(二)vbs执行显示中文乱码怎么办

https://jingyan.baidu.com/article/95c9d20d81c67dad4f756111.html

四、APIs

(一)大佬的博客

1. 测试开发技术—VBS随笔

https://www.cnblogs.com/jinjiangongzuoshi/category/491750.html
其中的:VBS基础篇 - 对象(1) - Class对象
用来学习面向对象形式的写法还挺不错的!!!

(二)字符串操作

1. VBS中常见字符串操作函数

https://www.jb51.net/article/159913.htm

2. vbs vbscript 中的回车换行符号 等特殊字符

https://www.dazhuanlan.com/2020/06/02/5ed645c962d9a/

(三)数组

动态数组:https://www.jb51.net/article/141114.htm

(四)文件文件夹操作

1. VBS对文件文件夹操作的例子

http://www.360doc.com/content/14/0606/15/219800_384287850.shtml
(五)vbs如何获取当前时间日期
http://www.jquerycn.cn/a_9237

五、产品其他完善度相关

将自己的vbs文件放到磁盘中合适的文件中,
然后右击发送到桌面快捷方式。
然后桌面就有快捷方式了,
它的图标是可以随意改变的,
可用其他图片,或自行设计图片。

详细步骤参考如下:

(一)“正规软件外形”

1、怎么修改桌面快捷方式图标

百度经验链接

2、怎样把一般的图片变成图标格式

推荐这个:转转大师,在线的,链接如下:
http://pdftoword.55.la/img2icon/

后记:小项目现状

v1.0 纯粹面向过程编程源码

' 
' 候帅洲
'
' 手机和微信:175 3102 3301
'
' 此小项目CSDN详解博客地址:https://blog.csdn.net/weixin_44591035/article/details/113667614
'
'
'
' 1、需求分析
' 一个盘里的文件名字开头全有10以内数字编号开头,
' 要求弹出窗口输入一串数字编号,便可以打开指定文件夹。
' 
' 2、举例
' 弹出交互窗口输入“122”,点击确认,
' 即可打开文件夹地址为:
' “E:\工作\1、人事\2、培训\2、实习期”。
' 其中,后面的顿号和汉字是任意的,
' 只关注文件名前面的数字即可。
' 
' 3、目前进度
' 以硬编码实现了第一个实用版本(v1.0:纯粹面向过程编码)
' 已经可以投入现实使用了,一位美女同事已经用上了
' 以后逐渐慢慢迭代版本吧


' 一、初始化与主窗口创建

' (一)定义变量与初始化

' 1. 定义和初始化目录结构
' (1)先硬编码根目录
dim strRootDir
strRootDir = "E:\工作\"

' (2)先硬编码所有分目录
dim idDirArr
idDirArr = Array( _
    "1", "1、人事", _
    "2", "2、顾问", _
    "3", "3、个人", _
    "4", "4、待整理", _
    _
    "11", "1、招聘", _
    "12", "2、培训", _
    "13", "3、制度", _
    "14", "4、活动", _
    _
    "111", "1、专业知识", _
    "112", "2、招聘简章", _
    "113", "3、简历", _
    "114", "4、统计", _
    "115", "5、素材", _
    "116", "6、其他资料", _
    _
    "120", "0、按类型分类汇总", _
    "121", "1、七天入职新员工培训", _
    "122", "2、实习期", _
    "123", "3、其他机构" _
)

' 2. 定义和初始化各类窗口标题
dim mainWinTitle, tipsWinTitle
' (1)主窗口标题
mainWinTitle = "博瑞智(邯郸)家庭教育服务中心-孙文"
' (2)提示窗口标题
tipsWinTitle = "来自候帅洲的温馨提示"

' 3. 定义和初始化各种健壮性处理提示用语
dim strTipsTemp0, strTipsTemp1, strTipsTemp2, strTipsTemp3
' (1)提示位置:一、(二)
strTipsTemp0 = vbCrLf + "世界上最漂亮的孙文!" + vbCrLf _
                + vbCrLf + "请输入要打开的文件夹编号吧!" 
' (2)提示位置:二、(二)
strTipsTemp1 = "您没有输入任何编号哦!!!"  
' (3)提示位置:二、(三)
strTipsTemp2 = "您的输入不是纯数字哦!!!"
' (4)提示位置:三、(二)
strTipsTemp3 = "您的输入的编号没有对应的文件夹哦!!!"

' (二)创建交互输入框
dim id
id = inputbox(strTipsTemp0,mainWinTitle)



' 二、健壮性处理

' (一)如果inputbox返回值为Empty,即用户点击的是“取消”;
If IsEmpty(id) Then  
    WScript.Quit 
End If

' (二)输入框内容为空时直接点击“确定”;
If Len(id) = 0 Then  
    msgbox strTipsTemp1, vbokcancel + vbInformation, tipsWinTitle
    WScript.Quit
End If

' (三)id有字符但为非纯数字时
If Not isnumeric(id) Then
    msgbox strTipsTemp2, vbokcancel + vbInformation, tipsWinTitle
    WScript.Quit
end if



' 三、主逻辑处理
' (id为纯数字时)
' (一)目录结构字典的定义和初始化
' 将目录结构“id-目录”放入键值对字典对象——idDirDict
dim idDirDict, i
Set idDirDict = WSH.CreateObject("Scripting.Dictionary")
For i = 0 to UBound(idDirArr)
    idDirDict.Add idDirArr(i), idDirArr(i + 1)
    i = i + 1
Next

' (二)健壮性处理
' 判断指定的key是否存在
If Not idDirDict.Exists(id) Then
    msgbox strTipsTemp3, vbokcancel + vbInformation, tipsWinTitle
    WScript.Quit
End If  

' (三)最终处理
' 1. 确定目录存在后,拼接绝对目录
dim strFinalDir
For i = 0 to Len(id) - 1
    strFinalDir = strFinalDir + "\" + idDirDict.Item(left(id, i + 1))
Next
' 2. 打开目标文件夹,结束
Dim ObjWS
Set ObjWS = WScript.CreateObject("wscript.shell")
ObjWS.run strRootDir + strFinalDir

v2.0 纯粹面向过程编码,良好函数抽象封装

1、架构图

在这里插入图片描述

2、源码

' 
' 候帅洲
'
' 手机和微信:175 3102 3301
'
' 此小项目CSDN详解博客地址:https://blog.csdn.net/weixin_44591035/article/details/113667614
'
'
' 1、需求分析
' 一个盘里的文件名字开头全有10以内数字编号开头,
' 要求弹出窗口输入一串数字编号,便可以打开指定文件夹。
' 
' 2、举例
' 弹出交互窗口输入“122”,点击确认,
' 即可打开文件夹地址为:
' “E:\工作\1、人事\2、培训\2、实习期”。
' 其中,后面的顿号和汉字是任意的,
' 只关注文件名前面的数字即可。
' 
' 3、目前进度
' 以硬编码实现的第二个版本,v2
' 还是纯粹面向过程编码,但都已良好封装函数,
' 函数抽象合适,函数之间有良好简洁且固定的层次关系
' 以后逐渐慢慢迭代版本吧
' 

' ' 程序入口
' ' 马克思写法,逻辑在物质中辩证存在,唯物主义辩证法
' Call MainWin()

' ' 一、主窗口
' ' 主窗口总函数
' Sub MainWin() 
'     dim id, mainWinTitle, mainWinTips
'     Call Init_MainWin(mainWinTitle, mainWinTips)
'     ' 创建交互输入框
'     id = inputbox(mainWinTips, mainWinTitle)
'     Call Robust_MainWin(id)
'     Call MainLogic(id)
' End Sub

' 程序入口
' 黑格尔写法,一切都在宇宙的逻辑之中,唯心主义
Call MainLogic(MainWin())

' 一、主窗口
' 主窗口总函数
Function MainWin() 
    dim id, mainWinTitle, mainWinTips
    Call Init_MainWin(mainWinTitle, mainWinTips)
    ' 创建交互输入框
    id = inputbox(mainWinTips, mainWinTitle)
    Call Robust_MainWin(id)
    MainWin = id
End Function

' (一)初始化主窗口提示内容
Sub Init_MainWin(mainWinTitle, mainWinTips)
    dim enterpriseName ,userName, userAdj, menAdj, womenAdj
    enterpriseName = "博瑞智(邯郸)家庭教育服务中心"
    userName = "孙文"
    menAdj = "世界上最帅的"
    womenAdj = "世界上最漂亮的"
    userAdj = womenAdj
    ' 主窗口标题
    mainWinTitle = enterpriseName & "-" & userName
    ' 提示用语
    mainWinTips = vbCrLf & userAdj & userName & vbCrLf _
                    + vbCrLf + "请输入要打开的文件夹编号吧!"
End Sub

' (二)主窗口健壮性处理
Sub Robust_MainWin(id)
    dim tipsWinTitle, tipsWinTips1, tipsWinTips2
    Call Init_Robust_MainWin(tipsWinTitle, tipsWinTips1, tipsWinTips2)
    
    ' 1. 如果inputbox返回值为Empty,即用户点击的是“取消”;
    If IsEmpty(id) Then  
        WScript.Quit 
    End If

    ' 2. 输入框内容为空时直接点击“确定”;
    If Len(id) = 0 Then  
        msgbox tipsWinTips1, vbokcancel + vbInformation, tipsWinTitle
        WScript.Quit
    End If

    ' 3. id有字符但为非纯数字时
    If Not isnumeric(id) Then
        msgbox tipsWinTips2, vbokcancel + vbInformation, tipsWinTitle
        WScript.Quit
    end if
End Sub

' (三)初始化主窗口健壮性处理提示窗口内容
Sub Init_Robust_MainWin(tipsWinTitle, tipsWinTips1, tipsWinTips2)
    ' 1. 初始化主窗口健壮性处理提示窗口标题
    tipsWinTitle = "来自候帅洲的温馨提示"

    ' 2. 初始化主窗口健壮性处理提示用语
    ' (1)提示位置:一、(三)2.
    tipsWinTips1 = "您没有输入任何编号哦!!!"  
    ' (2)提示位置:一、(三)3.
    tipsWinTips2 = "您的输入不是纯数字哦!!!"
End Sub



' 二、主逻辑
' 主逻辑总函数
Sub MainLogic(id)
    dim strRootDir, idDirDict
    Call Init_MainLogic(strRootDir, idDirDict)
    Call Robust_MainLogic(id, idDirDict)
    
    ' 1. 确定目录存在后,拼接绝对目录
    ' (这里的确定的前提是,硬编码的目录结构映射是真实的。)
    dim strFinalDir, i
    For i = 0 to Len(id) - 1
        strFinalDir = strFinalDir + "\" + idDirDict.Item(left(id, i + 1))
    Next
    
    ' 2. 打开目标文件夹,结束
    Dim ObjWS
    Set ObjWS = WScript.CreateObject("wscript.shell")
    ObjWS.run strRootDir + strFinalDir
End Sub

' (一)初始化主逻辑内容
Sub Init_MainLogic(strRootDir, idDirDict)
    ' 1、硬编码目录结构
    ' (1)先硬编码根目录
    strRootDir = "E:\ID之道\工作"

    ' (2)先硬编码所有分目录
    dim idDirArr
    idDirArr = Array( _
        "1", "1、人事", _
        "2", "2、顾问", _
        "3", "3、个人", _
        "4", "4、待整理", _
        _
        "11", "1、招聘", _
        "12", "2、培训", _
        "13", "3、制度", _
        "14", "4、活动", _
        _
        "111", "1、专业知识", _
        "112"
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值