话说孔大力外出吃饭,约莫6点钟的样子回到了办公室。
只见他一脸未吃尽兴的样子,边走还边抹着嘴角的油花。
回到座位上,他看了一眼桌上的草稿,心里极不情愿地詈骂道:“老板不讲武德!”
骂归骂,活儿还是得接着干啊,谁叫咱是打工人呢,时间紧迫,还得抓点紧不是。
孔大力将这个共享文件夹命名为 TempShare
,字面上也就是临时文件夹的意思。
按照原来的设想,先搭建测试环境,然后再写一些代码来实现最终想要的功能和效果。
孔大力操作着电脑,用了将近2个小时才搭建出了一个简单的域环境。
- AD域服务:Windows 2016
- 共享服务:Windows 2016
- 客户端:Windows 10
然后在共享服务器启用文件服务并创建一个名称为 TempShare
的共享文件夹。
1、在 服务器管理器
上点击 添加角色和功能
,安装文件服务。
2、注意钩选 启用基于存取的枚举
,用户只能看到自己有权限访问的文件夹。
3、起个名字叫 TempShare
,选择 通用
组。
接下来他尝试着使用 VBS
写一些代码。
首先,先来定义一些可能用到的变量。
初步设定,文件夹名称为 用户名+随机8位字符+日期
,有效访问期限为3天,默认使用 OUTLOOK
粘贴发送链接。
strShareFolder = "\\Server\TempShare$" ' 指定共享路径
strUserName = objNetwork.UserName ' 获取用户名
intCharNo = 8 ' 指定随机8个字符
strRandomChar = RandomChar(intCharNo) ' 获取随机字符串
intAddDate = 3 ' 指定3天过期
strDate = CalculateDate(intAddDate) ' 指定日期以YYYYMMDD的形式
strFolderName = strUserName & "-" & strRandomChar & "-" & strDate ' 指定生成的文件夹名称
intArgNum = WScript.Arguments.Count ' 获取命令参数数量
intMailFlag = 0 ' 0 - 以OUTLOOK方式打开, 1 - 以IE方式打开
其次,创建 TempShare
临时共享文件夹。
objFSO.CreateFolder(strShareFolder & "\" & strFolderName)
If Err.Number <> 0 Then
Msgbox "An error occurred during folder creating." & vbCrLf & "ErrNo: " & Err.Number
End If
再次,在当前用户桌面上创建可访问 TempShare
的快捷方式。
代码中的 TempShareOpenIcon.ico
图标文件为快捷方式的图标,可任意指定。
strShortcutPath = objWSH.SpecialFolders("Desktop")
Set objSC = objWSH.CreateShortcut(strShortcutPath & "\" & strFolderName & ".lnk")
objSC.TargetPath = strShareFolder & "\" & strFolderName
objSC.IconLocation = "\\Server\TempShareOpenIcon.ico, 0"
objSC.Save
If Err.Number <> 0 Then
Msgbox "An error occurred during shortcut creating ." & vbCrLf & "ErrNo: " & Err.Number
End If
再而三,复制 TempShare
路径到剪贴板。
此举只为提供后续步骤的粘贴动作。
PutInClipboardText "file:///" & strShareFolder & "\" & strFolderName & "\"
If Err.Number <> 0 Then
Msgbox "Could not copy TempShare path to clibpoard." & vbCrLf & "ErrNo: " & Err.Number
End If
最后,将剪贴板内容再粘贴到邮件正文。
此处可以修改为任意你想要的打开方式,比如粘贴到其他邮件客户端。
另外需要注意了,通过IE浏览器来间接打开发送邮件的方式,可能会导致一些失败。
' 启动OUTLOOK生成邮件,没有OUTLOOK时使用IE打开
' 注意,用IE打开会有许可确认提示窗口
Set objOL = CreateObject("Outlook.Application")
Set MailItem = objOL.CreateItem(0)
If Err.Number <> 0 Then
intMailFlag = 1
End If
' 生成模板(OUTLOOK换行:vbCrLf,IE换行:%0D%0A)
If intMailFlag = 0 Then
strNewLine=vbCrLf
Else
strNewLine = "%0D%0A"
End If
strMail = " " & strNewLine & " " & strNewLine &_
"<--------------------------------------------------------------------------------------------------------------->" & strNewLine &_
" TempShare: file:///" & strShareFolder & "\" & strFolderName & "\" & strNewLine & " " &_
strNewLine &_
" [Guidance]" & strNewLine &_
" This is a temporary folder for transmitting files between company PCs." & strNewLine &_
" Click the above TempShare, you can download/upload files freely." & strNewLine &_
" Attention, files will be deleted automatically after " & Mid(strDate, 5, 2) & "/" & Right(strDate, 2) & "/" &Left(strDate, 4) & "(MM/DD/YYYY)." & strNewLine &_
"<--------------------------------------------------------------------------------------------------------------->" & strNewLine & strNewLine & strNewLine
If intMailFlag = 0 Then
' 通过 OUTLOOK 创建模板
MailItem.Body = strMail
MailItem.Display
Else
' 通过 IE 创建模板
objIE.visible=false
objIE.navigate("mailto:?body=" & strMail)
End If
' 用文件资源管理器打开 TempShare 所在路径
objSH.Explore strShareFolder & "\" & strFolderName & "\"
If Err.Number <> 0 Then
Msgbox "Could not create template mail via Internet Explorer." & vbCrLf & "ErrNo: " & Err.Number
End If
以上代码另外还包括了几个调用函数,具体都写在完整源码里了,后面有下载。
PutInClipboardText(ByVal strString) ' 复制文本到剪贴板
RandomChar(intCharNo) ' 产生指定字符和位数的随机字符串(1~9/A~Z/a~z/_-$!)
CalculateDate(intAddDate) ' 计算指定的天数并以 YYYYMMDD 形式返回
夜已深,窗外不断传来虫儿们的鸣叫声。
孔大力眯缝着眼看了看时间,已是凌晨1点多了。
他眼中噙着泪,口中打着哈,站起身来伸了个懒腰。
“哈啊...看样子今天的班儿就加到这儿吧~”
“咳咳...还有共享文件夹的权限问题和时间限定问题,算了算了,明天再搞吧~年轻人要耗子尾汁啊!”
一阵阵困意袭来,孔大力不禁自言自语起来。
这位苦逼的打工人强打精神,简单地收拾下自己的电脑和背包,很快就甩门离去,背影渐渐消失在茫茫夜色中......
关注微信公众号,查看下一篇,下载完整源码。
关注 @网管小贾,阅读更多...
WeChat@网管小贾 | www.sysadm.cc