[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎么让输出的ini文件为Unicode编码?

RT,我想直接把文件夹拖到bat上运行,直接生成图标

研究了3个晚上,弄了个像点样子东西
但是如果文件名里有非ANSI编码的字符输出的ini就变成“?”了
有什么解决方法吗
  1. @echo off
  2. cd /d %1
  3. ::
  4. set "ico=%~1"
  5. >>desktop.ini echo.[.ShellClassInfo] >>desktop.ini
  6. setlocal enabledelayedexpansion
  7. >>desktop.ini echo.IconResource=!ico!\#.ico,0
  8. endlocal
  9. >>desktop.ini echo.[ViewState]
  10. >>desktop.ini echo.Mode=
  11. >>desktop.ini echo.Vid=
  12. >>desktop.ini echo.FolderType=Pictures
  13. attrib desktop.ini +s +h
  14. attrib -r %1 /d
  15. attrib +r %1 /d
  16. ::
  17. echo 图标生成完成
  18. ::
  19. attrib -s -h %1/desktop.ini
  20. set add=%~dp1
  21. for /f "delims=" %%a in (desktop.ini) do (
  22.   set str=%%a
  23.   setlocal enabledelayedexpansion
  24.   set str=!str:%add%=..\!
  25.   echo !str!>>1.ini
  26.   endlocal
  27. )
  28. move 1.ini desktop.ini
  29. attrib +s +h %1/desktop.ini
  30. attrib +s +h %1/#.ico
  31. attrib -r %1 /d
  32. attrib +r %1 /d
  33. ::
  34. pause
复制代码

批处理保存为 ansi 编码。拖文件夹上来,运行后等一二分钟,刷新一下。就会出现了。
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /d %%a in (%1) do (
  4. echo [.ShellClassInfo]
  5. echo IconResource=..\%%~nxa\#.ico,0
  6. echo [ViewState]
  7. echo Mode=
  8. echo Vid=
  9. echo FolderType=Pictures))>"%~1\desktop.ini"
  10. pushd %1
  11. attrib +s +h desktop.ini
  12. attrib +s +h #.ico
  13. popd
  14. attrib -r %1 /d
  15. attrib +r %1 /d
  16. ie4uinit -show
  17. pause
复制代码
XP 系统不一定有效。

TOP

本帖最后由 sykIII 于 2018-8-23 15:21 编辑

回复 6# yhcfsr


十分感谢您的帮助,我去加一下

TOP

回复 5# sykIII

来论坛QQ群里问,这里太麻烦了.再有问题,就只能等大神现身帮忙啦.
QQ 33892006

TOP

本帖最后由 sykIII 于 2018-8-23 15:17 编辑

回复 4# yhcfsr

无意间发现这么做可以直接保证所有特殊字符正确显示
但是输出文件编码是UTF-8,不能被windows正确识别(也就不能起到改desktop.ini的效果了)
但是手动另存为unicode的话就可以识别了
是否能在末尾加一个转换的命令?
  1. @echo off
  2. chcp 65001
  3. cd /d %1
  4. ::
  5. set "ico=%~1"
  6. >>desktop.ini echo.[.ShellClassInfo] >>desktop.ini
  7. setlocal enabledelayedexpansion
  8. >>desktop.ini echo.IconResource=!ico!\#.ico,0
  9. endlocal
  10. >>desktop.ini echo.[ViewState]
  11. >>desktop.ini echo.Mode=
  12. >>desktop.ini echo.Vid=
  13. >>desktop.ini echo.FolderType=Pictures
  14. attrib desktop.ini +s +h
  15. attrib +r %1 /d
  16. ::
  17. attrib -s -h %1/desktop.ini
  18. set add=%~dp1
  19. for /f "delims=" %%a in (desktop.ini) do (
  20.   set str=%%a
  21.   setlocal enabledelayedexpansion
  22.   set str=!str:%add%=..\!
  23.   echo !str!>>1.ini
  24.   endlocal
  25. )
  26. move 1.ini desktop.ini
  27. attrib +s +h %1/desktop.ini
  28. attrib +s +h %1/#.ico
  29. attrib +r %1 /d
  30. ::
  31. pause
复制代码

TOP

本帖最后由 yhcfsr 于 2018-8-23 15:16 编辑

回复 3# sykIII

我不知道你是怎么写的,记得发自己改的东西,如果你不确定自己写对的话.
  1. cmd /u /c ""C:\Users\CF\Desktop\test.bat" "参数1" "参数2""
复制代码
UTF8不太好处理,非要用BAT的话,只能BAT+JS,或BAT+VBS,或BAT+PS,才能处理你这种多编码格式.
QQ 33892006

TOP

本帖最后由 sykIII 于 2018-8-23 14:56 编辑

回复 2# yhcfsr


提示不是可执行的命令

TOP

  1. cmd /u /c "BAT脚本路径 参数列表(如果有的话)"
复制代码
QQ 33892006

TOP

返回列表