标题: [注册表类] [已解决]键值名称是乱码的注册表键值批处理如何删除? [打印本页]
作者: dyfgkxue 时间: 2015-3-13 11:08 标题: [已解决]键值名称是乱码的注册表键值批处理如何删除?
单位的很多电脑安装了中文名称的字体,我想用批处理删除Fonts文件夹中的中文名称字体,并删除"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"里,键值数据为中文名称字体对应的键值名称。- @ECHO OFF & SETLOCAL ENABLEEXTENSIONS
- SET FontsRegKey="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
- ECHO 文星简小标宋>tmp.txt
- ECHO 文星仿宋>>tmp.txt
- rem ECHO 文星楷体>>tmp.txt
- rem ECHO 文星黑体>>tmp.txt
- rem ECHO 文星标宋>>tmp.txt
- ECHO 方正小标宋简体>>tmp.txt
- ECHO 方正仿宋简体>>tmp.txt
- ECHO 方正小标宋_GBK>>tmp.txt
- rem ECHO 方正仿宋_GBK>>tmp.txt
- rem ECHO 方正楷体_GBK>>tmp.txt
- rem ECHO 方正黑体_GBK>>tmp.txt
- FOR /f "eol= delims=" %%i IN (tmp.txt) DO (
- ECHO 正在查找%windir%\Fonts\%%i.ttf & pause >nul
- IF EXIST "%windir%\Fonts\%%i.ttf" (
- DEL /q /f "%windir%\Fonts\%%i.ttf"
- ECHO %%i.ttf删除成功! & PAUSE >nul
- ) ELSE (
- ECHO 未找到%%i.ttf! & PAUSE >nul
- )
- ECHO %%i
- FOR /f %%j IN ('reg query %FontsRegKey% ^| findstr /i %%i.ttf') DO (
- REG delete %FontsRegKey% /v "%%j (TrueType)" /f >nul 2>nul &&ECHO 注册表键值"%%j (TrueType)"删除成功!||ECHO 注册表键值"%%j (TrueType)"删除失败!
- )
- PAUSE
- )
- DEL tmp.txt
复制代码
上述批处理运行没有问题,但有两个问题,求助解决:
1.第17、18行,为什么用 && 连接在一起,批处理就不能运行,我的本意是如果DEL成功,再用ECHO显示删除成功。请问如何修改才能用 && 连接在一起?
2.文星简小标宋.ttf安装时,在注册表里生成的键值名称是乱码,上述批处理不能删除该键值名称,请问如何才能删除?
文星简小标宋.ttf下载链接:
http://pan.baidu.com/s/1c0xXFLe
作者: DAIC 时间: 2015-3-13 11:38
17、18- DEL /q /f "%windir%\Fonts\%%i.ttf" && ECHO %%i.ttf删除成功!
- PAUSE
复制代码
作者: pcl_test 时间: 2015-3-13 12:52
回复 1# dyfgkxue
修改了下你代码的处理逻辑,文星简小标宋注册表乱码的问题要单独处理,使用注册表文件直接导入空值删除的方法,reg文件见附件- @ECHO OFF & SETLOCAL ENABLEEXTENSIONS
- SET FontsRegKey="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
- ECHO 文星仿宋>>tmp.txt
- rem ECHO 文星楷体>>tmp.txt
- rem ECHO 文星黑体>>tmp.txt
- rem ECHO 文星标宋>>tmp.txt
- ECHO 方正小标宋简体>>tmp.txt
- ECHO 方正仿宋简体>>tmp.txt
- ECHO 方正小标宋_GBK>>tmp.txt
- rem ECHO 方正仿宋_GBK>>tmp.txt
- rem ECHO 方正楷体_GBK>>tmp.txt
- rem ECHO 方正黑体_GBK>>tmp.txt
- FOR /f "eol= delims=" %%i IN (tmp.txt) DO (
- ECHO 正在查找%windir%\Fonts\%%i.ttf
- IF EXIST "%windir%\Fonts\%%i.ttf" (
- DEL /q /f "%windir%\Fonts\%%i.ttf" && ECHO %%i.ttf删除成功!
- FOR /f %%j IN ('reg query %FontsRegKey% ^| findstr /i %%i.ttf') DO (
- REG delete %FontsRegKey% /v "%%j (TrueType)" /f >nul 2>nul &&ECHO 注册表键值"%%j (TrueType)"删除成功!||ECHO 注册表键值"%%j (TrueType)"删除失败!
- )
- ) ELSE (
- ECHO 未找到%%i.ttf!
- )
- )
- DEL tmp.txt
- del "%windir%\Fonts\文星简小标宋.ttf" 2>nul
- regedit /s "文星简小标宋.reg"
- PAUSE
复制代码
作者: dyfgkxue 时间: 2015-3-13 14:32
回复 3# pcl_test
想了想为什么用
regedit /s "文星简小标宋.reg"
可以成功的原因:
导出的“文星简小标宋.reg”文件是uicode格式,保持了键值名称的原样,所以能够成功!
我再测试测试不同的操作系统(win7/winxp)是否兼容!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |