标题: [文件操作] 批处理怎么让输出的ini文件为Unicode编码? [打印本页]
作者: sykIII 时间: 2018-8-23 12:14 标题: 批处理怎么让输出的ini文件为Unicode编码?
RT,我想直接把文件夹拖到bat上运行,直接生成图标
研究了3个晚上,弄了个像点样子东西
但是如果文件名里有非ANSI编码的字符输出的ini就变成“?”了
有什么解决方法吗- @echo off
- cd /d %1
- ::
- set "ico=%~1"
- >>desktop.ini echo.[.ShellClassInfo] >>desktop.ini
- setlocal enabledelayedexpansion
- >>desktop.ini echo.IconResource=!ico!\#.ico,0
- endlocal
- >>desktop.ini echo.[ViewState]
- >>desktop.ini echo.Mode=
- >>desktop.ini echo.Vid=
- >>desktop.ini echo.FolderType=Pictures
- attrib desktop.ini +s +h
- attrib -r %1 /d
- attrib +r %1 /d
- ::
- echo 图标生成完成
- ::
- attrib -s -h %1/desktop.ini
- set add=%~dp1
- for /f "delims=" %%a in (desktop.ini) do (
- set str=%%a
- setlocal enabledelayedexpansion
- set str=!str:%add%=..\!
- echo !str!>>1.ini
- endlocal
- )
- move 1.ini desktop.ini
- attrib +s +h %1/desktop.ini
- attrib +s +h %1/#.ico
- attrib -r %1 /d
- attrib +r %1 /d
- ::
- pause
复制代码
作者: yhcfsr 时间: 2018-8-23 13:51
- cmd /u /c "BAT脚本路径 参数列表(如果有的话)"
复制代码
作者: sykIII 时间: 2018-8-23 14:53
本帖最后由 sykIII 于 2018-8-23 14:56 编辑
回复 2# yhcfsr
提示不是可执行的命令
作者: yhcfsr 时间: 2018-8-23 15:06
本帖最后由 yhcfsr 于 2018-8-23 15:16 编辑
回复 3# sykIII
我不知道你是怎么写的,记得发自己改的东西,如果你不确定自己写对的话.- cmd /u /c ""C:\Users\CF\Desktop\test.bat" "参数1" "参数2""
复制代码
UTF8不太好处理,非要用BAT的话,只能BAT+JS,或BAT+VBS,或BAT+PS,才能处理你这种多编码格式.
作者: sykIII 时间: 2018-8-23 15:14
本帖最后由 sykIII 于 2018-8-23 15:17 编辑
回复 4# yhcfsr
无意间发现这么做可以直接保证所有特殊字符正确显示
但是输出文件编码是UTF-8,不能被windows正确识别(也就不能起到改desktop.ini的效果了)
但是手动另存为unicode的话就可以识别了
是否能在末尾加一个转换的命令?- @echo off
- chcp 65001
- cd /d %1
- ::
- set "ico=%~1"
- >>desktop.ini echo.[.ShellClassInfo] >>desktop.ini
- setlocal enabledelayedexpansion
- >>desktop.ini echo.IconResource=!ico!\#.ico,0
- endlocal
- >>desktop.ini echo.[ViewState]
- >>desktop.ini echo.Mode=
- >>desktop.ini echo.Vid=
- >>desktop.ini echo.FolderType=Pictures
- attrib desktop.ini +s +h
- attrib +r %1 /d
- ::
- attrib -s -h %1/desktop.ini
- set add=%~dp1
- for /f "delims=" %%a in (desktop.ini) do (
- set str=%%a
- setlocal enabledelayedexpansion
- set str=!str:%add%=..\!
- echo !str!>>1.ini
- endlocal
- )
- move 1.ini desktop.ini
- attrib +s +h %1/desktop.ini
- attrib +s +h %1/#.ico
- attrib +r %1 /d
- ::
- pause
复制代码
作者: yhcfsr 时间: 2018-8-23 15:17
回复 5# sykIII
来论坛QQ群里问,这里太麻烦了.再有问题,就只能等大神现身帮忙啦.
作者: sykIII 时间: 2018-8-23 15:19
本帖最后由 sykIII 于 2018-8-23 15:21 编辑
回复 6# yhcfsr
十分感谢您的帮助,我去加一下
作者: xczxczxcz 时间: 2018-8-23 18:21
批处理保存为 ansi 编码。拖文件夹上来,运行后等一二分钟,刷新一下。就会出现了。- @echo off
- cd /d "%~dp0"
-
- (for /d %%a in (%1) do (
- echo [.ShellClassInfo]
- echo IconResource=..\%%~nxa\#.ico,0
- echo [ViewState]
- echo Mode=
- echo Vid=
- echo FolderType=Pictures))>"%~1\desktop.ini"
- pushd %1
- attrib +s +h desktop.ini
- attrib +s +h #.ico
- popd
- attrib -r %1 /d
- attrib +r %1 /d
- ie4uinit -show
- pause
复制代码
XP 系统不一定有效。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |