无忧启动论坛

标题: 脚本中检测路径中包含汉字的方法 [打印本页]

作者: baby1277    时间: 2025-9-6 07:01
标题: 脚本中检测路径中包含汉字的方法
本帖最后由 baby1277 于 2025-9-7 20:01 编辑

部分命令不支持路径中带有汉字(例如Dism和VHD)

如路径中有汉字就可能因为编码问题导致报错或闪退

所以需要在脚本的开头加上检测路径中包含汉字的必要

以下是我使用的方法,原理很简单:


分别把路径写入到ANSI和UTF-8编码格式的文本,再对比文件内容。

文件内容相同说明路径没有汉字字符,不相同说明存在汉字字符。

因为在UTF-8编码格式下汉字字符因乱码会导致其内容与ANSI编码格式下不同


  1. @echo off
  2. title baby1277 2025.9.7
  3. cd /d %temp%
  4. set nameP=%~dp0
  5. echo chcp 65001 >read.bat
  6. echo echo %nameP%^>"%cd%\UTF-8.TXT">>read.bat
  7. echo exit >>read.bat
  8. start /min /wait "" "%cd%\read.bat"
  9. echo %nameP%>ANSI.TXT
  10. for /f "delims=" %%a in (UTF-8.TXT) do for /f "delims=" %%b in (ANSI.TXT) do (
  11. if "%%a"=="%%b" (echo 当前路径中(没有)汉字字符) else echo 当前路径中(存在)汉字字符
  12. )
  13. pause>nul
复制代码
检测路径中包含汉字.zip (554 Bytes, 下载次数: 24)
作者: 窄口牛    时间: 2025-9-6 07:29
本帖最后由 窄口牛 于 2025-9-6 07:36 编辑

subst了解一下,范例
作者: tanglf    时间: 2025-9-6 08:10
谢谢提供

作者: tong2025tong    时间: 2025-9-6 08:18
这个可以 不错
作者: baby1277    时间: 2025-9-6 08:21
窄口牛 发表于 2025-9-6 07:29
subst了解一下,范例。

subst命令有很大的局限性,重启盘符就消失了,如果后期还有其他操作也不好搞

VHD系统启动不支持中文路径,添加bcd启动项就需要检查路径中时候存在中文。
用subst命令映射掉VHD文件的中文路径能成功添加bcd菜单实则其实根本启动不了系统。

所以subst能用,但不推荐,适用性低,最好提示让用户自己修改路径。
作者: 窄口牛    时间: 2025-9-6 08:29
baby1277 发表于 2025-9-6 08:21
subst命令有很大的局限性,重启盘符就消失了,如果后期还有其他操作也不好搞

VHD系统启动不支持中文路 ...

嗯,你说的确实。
作者: 小灰兔    时间: 2025-9-6 08:55
谢谢分享
作者: wn168cn@163.com    时间: 2025-9-6 11:39
感谢楼主分享
作者: bj6688    时间: 2025-9-6 15:15
感谢楼主分享
作者: guong    时间: 2025-9-6 15:21
感谢分享!
作者: handsome_xiang    时间: 2025-9-6 17:31
感谢分享!
作者: szwp    时间: 2025-9-6 19:13
遇到过temp设为中文的
作者: wawa6789    时间: 2025-9-6 20:29
谢谢楼主分享
作者: wuhongzhen    时间: 2025-9-6 20:32
谢谢分享!
作者: luodeman    时间: 2025-9-6 20:41
感谢大佬热心分享,辛苦了
作者: 燕飞龙    时间: 2025-9-7 13:09
谢谢分享
作者: fegr    时间: 2025-9-7 14:11
感谢楼主分享
作者: dyz1997    时间: 2025-9-11 22:27
Dism++




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3