如何为VBS脚本设置区域设置以支持西里尔文文件夹?
解决VBS脚本处理西里尔文文件夹的问题
首先修正你原脚本里的关键错误:VBS不会解析%CD%这类批处理环境变量,直接写入会被当作路径的一部分,导致无法正确定位文件。先把路径逻辑改成VBS能识别的写法:
Set fso = CreateObject("Scripting.FileSystemObject") ZipFile = fso.GetAbsolutePathName("file.zip") ' 获取当前目录下file.zip的绝对路径 ExtractTo = fso.GetAbsolutePathName(".") ' 获取当前目录的绝对路径 Set objShell = CreateObject("Shell.Application") Set FilesInZip = objShell.NameSpace(ZipFile).Items objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)
接下来解决西里尔文兼容问题——VBS没法直接像批处理那样用chcp切换代码页,但可以用以下两种简单方案:
方法一:用批处理包裹VBS脚本(推荐)
借助你熟悉的chcp 1251,写一个批处理文件启动VBS,让VBS继承批处理设置的代码页环境:
- 新建
unzip.bat文件,内容如下:
@echo off chcp 1251 >nul cscript //nologo unzip.vbs
- 把修正后的VBS脚本命名为
unzip.vbs,和批处理放在同一目录,双击批处理运行即可。
方法二:确保VBS脚本编码正确
如果不想用批处理,把VBS脚本保存为UTF-8 with BOM编码(必须带BOM,否则VBS会识别为ANSI),这样脚本内的西里尔文字符能被正确解析。同时确保系统区域设置里,「非Unicode程序的语言」设置为俄语或其他西里尔文语言。
注:Shell.Application的CopyHere方法依赖系统区域设置,所以如果系统默认非Unicode语言不是西里尔文,方法一的批处理切换方案会更可靠。
内容的提问来源于stack exchange,提问作者Verity Freedom
相关产品推荐
相关产品推荐

