VBScript中%username%的等效写法:删除当前用户OfficeFileCache文件夹
解决VBScript中无法使用
%username%获取用户目录的问题 嘿,我看到你的问题了——VBScript不像CMD那样直接识别%username%这种环境变量写法,得用它自己的方法来获取用户相关路径。另外先提个小细节:你的taskkill命令里多写了一个.exe(比如msouc.exe.exe),这会导致命令找不到进程,得改成msouc.exe和msosync.exe哦!
下面给你两种靠谱的解决方法:
方法1:通过环境变量获取用户名
用WScript.Shell的Environment方法读取USERNAME环境变量,然后拼接成完整路径:
Option Explicit Dim objShell : Set objShell = CreateObject("WScript.Shell") Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim userName : userName = objShell.Environment("PROCESS")("USERNAME") Dim cacheFolder : cacheFolder = "C:\Users\" & userName & "\AppData\Local\Microsoft\Office\16.0\OfficeFileCache" ' 先结束相关进程(注意修正了.exe的重复问题) objShell.Run "taskkill /f /im msouc.exe", 0 objShell.Run "taskkill /f /im msosync.exe", 0 ' 删除缓存文件夹,先检查存在性避免报错 If fso.FolderExists(cacheFolder) Then fso.DeleteFolder cacheFolder, True End If
方法2:直接获取LocalAppData路径(更稳妥)
这种方法不需要拼接用户名,直接获取用户的AppData\Local文件夹,兼容性更好(比如遇到非默认用户目录的系统也能正常工作):
Option Explicit Dim objShell : Set objShell = CreateObject("WScript.Shell") Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim localAppData : localAppData = objShell.SpecialFolders("Local AppData") Dim cacheFolder : cacheFolder = localAppData & "\Microsoft\Office\16.0\OfficeFileCache" ' 结束相关进程(修正了重复的.exe) objShell.Run "taskkill /f /im msouc.exe", 0 objShell.Run "taskkill /f /im msosync.exe", 0 ' 删除前先检查文件夹是否存在,避免抛出错误 If fso.FolderExists(cacheFolder) Then fso.DeleteFolder cacheFolder, True End If
我特意加了文件夹存在性判断,这样如果缓存文件夹本来就不存在,脚本不会报错,运行起来更健壮。
内容的提问来源于stack exchange,提问作者Jclay34
相关产品推荐
相关产品推荐

