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

[代码合集] BAT调用rar解压及里面txt文本处理连同运行为何出错?

我写个了一个 关于一个 rar压缩包里面文件 解包的批处理

批量处理当前目录下的rar文件
根据对应的rar文件名  建立对应的文件夹
将*.pak、*.man.*.bin文件 解压到对应文件夹下 的PAKS文件夹下

*.txt解压出来的文件全部 都导出到以  rar文件名的一个 txt文本文件
具体书写模式为:rar文件名_说明.txt


现在最主要的 就是有些 rar文件里面 txt文本是  UTF_8格式的
我批处理里面就是 对一个特定文件名 ALI213.txt
进行转化为 ansi编码后 再 统一导入到
rar文件名_说明.txt    文件中去


问题:
现在这个批处理可以完美解包并处理 ALI213.txt 为ansi编码
在到处入到  rar文件名_说明.txt    文件中去
然后除了  ALI213.txt以外的ansi编码txt文件都导入到
rar文件名_说明.txt    文件中去

但是我写代码不能批量处理 本批处理所有 rar文件
只能修改使用dir命令出来第一个 rar文件路径来处理

求大大帮我修正可以处理全部的rar

并且txt文件都合并为一个  
rar文件名_说明.txt    文件中去


具体问题所在 for语段在:
for /f "usebackq delims="  %%I in (`dir /b/s/on "%~dp0*.rar"`) do (

大家可以搜索跳转查看和修改

因为 论坛里面会弄我这个代码的没几个
而且时间很不固定
还不知道啥时候能帮我解决
本想找人解决的
但是batman想给论坛弄点气氛
所以就按照他说的发帖子了

希望大家能尽快帮我解决 呵呵
谢谢诶了

因为 论坛里面会弄我这个代码的没几个

听谁说的?
本想找人解决的

本来打算找谁?他怎么还不来啊?对了顺便问问你打算给那个人多少钱啊,如果价钱合适我可以帮你搞定。

TOP

本帖最后由 apang 于 2013-1-5 16:35 编辑

没楼主说的那么夸张的吧?
WinRAR路径检测貌似有问题呀,我的是HKEY_CURRENT_USER\Software\WinRAR
for循环中用goto的话再也回不来了。。。
install程序段:
  1. @echo off
  2. :install
  3. cls
  4. for /f "delims=" %%I in ('dir /b/s/on *.rar') do (
  5.   "%RarPath%" x -y -ibck "%%I" *.txt "%%~nI\PAKS\"
  6.   "%RarPath%" x -y -ibck "%%I" *.man "%%~nI\PAKS\"
  7.   "%RarPath%" x -y -ibck "%%I" *.pak "%%~nI\PAKS\"
  8.   "%RarPath%" x -y -ibck "%%I" *.bin "%%~nI\PAKS\"
  9.   pushd "%%~nI\PAKS\"
  10.   If exist "ALI213.txt" (
  11.     call :MakeVBS
  12.     (for /f "skip=60 delims=" %%a in (ALI213.txt.ansi.txt) do (
  13.       echo;%%a
  14.     ))>$
  15.     del /q "ALI213.txt" "ALI213.txt.ansi.txt"
  16.   )
  17.   for /f "delims=" %%a in ('dir /b/s/on *.txt') do (
  18.     (echo;&echo;)>>$
  19.     (for /f "usebackq delims=" %%b in ("%%a") do (
  20.       echo;%%b
  21.     ))>>$
  22.     del /q "%%a"
  23.   )
  24.   move $ "%%~nI_说明.txt"
  25.   popd
  26. )
  27. pause
  28. rem goto Menu
  29. :MakeVBS
  30. >"utf8ansi.vbs"  (
  31. echo.set fso = CreateObject^("Scripting.FileSystemObject"^)  
  32. echo.'U8ToU8Bom "ALI213.txt" '如果要生成一个有BOM的文件,启用此行
  33. echo. U8ToAnsi "ALI213.txt"
  34. echo.function U8ToU8Bom^(strFile^)
  35. echo.dim ADOStrm
  36. echo.Set ADOStrm = CreateObject^("ADODB.Stream"^)
  37. echo.ADOStrm.Type = 2
  38. echo.ADOStrm.Mode = 3
  39. echo.ADOStrm.CharSet = "utf-8"
  40. echo.ADOStrm.Open
  41. echo.ADOStrm.LoadFromFile strFile
  42. echo.ADOStrm.SaveToFile strFile ^& ^".u8.txt^", 2
  43. echo.ADOStrm.Close
  44. echo.Set ADOStrm = Nothing
  45. echo.end function
  46. echo.function U8ToAnsi^(strFile^)
  47. echo.dim ADOStrm
  48. echo.dim s
  49. echo.Set ADOStrm = CreateObject^("ADODB.Stream"^)
  50. echo.ADOStrm.Type = 2
  51. echo.ADOStrm.Mode = 3
  52. echo.ADOStrm.CharSet = "utf-8"
  53. echo.ADOStrm.Open
  54. echo.ADOStrm.LoadFromFile strFile
  55. echo.s = ADOStrm.ReadText
  56. echo.ADOStrm.Position = 0
  57. echo.ADOStrm.CharSet = "gbk"
  58. echo.ADOStrm.WriteText s
  59. echo.ADOStrm.SetEOS
  60. echo.ADOStrm.SaveToFile strFile ^& ^".ansi.txt^", 2
  61. echo.ADOStrm.Close
  62. echo.Set ADOStrm = Nothing
  63. echo.end function
  64. )
  65. cscript /NoLogo "utf8ansi.vbs"&del /q "utf8ansi.vbs"
复制代码

TOP

没找到 Uninstall 还原标签  没运行前 大概看了下
代码  乱

TOP

我也简化一下  install 段
  1. @echo off
  2. set "RarPath=C:\Program Files\WinRAR\WinRAR.exe"
  3. :install
  4. for /f "delims="  %%I in ('dir /b/s/on "%~dp0*.rar"') do (
  5.     del "%tmp%\ALI213*.txt" >nul 2>nul
  6.     "%RarPath%" x -y -ibck "%%I" *.txt *.man  *.pak *.bin "%%~dpnI\PAKS\"
  7.     PUSHD "%%~dpnI\PAKS\"
  8.     If exist "ALI213.txt" (
  9.        rem 这里的+20自己去调整
  10.        more /s +20 "%~s0" > "U82A.vbs"
  11.        U82A.vbs "ALI213.txt" "ALI213.txt.ansi.t"&del U82A.vbs
  12.        >"%%~nI_说明.txt.ansi.t" more +60 "ALI213.txt.ansi.t"
  13.        del "ALI213.txt" "ALI213.txt.ansi.t"
  14.     )
  15.        type *.txt >>"%%~nI_说明.txt.ansi.t" 2>nul
  16.        move "%%~nI_说明.txt.ansi.t" "%%~nI_说明.txt"
  17.        popd
  18. )
  19. PAUSE&goto :eof
  20. Set objArgs = WScript.Arguments
  21. FUS = objArgs(0)
  22. FUD = objArgs(1)
  23. Call WriteToFile(FUD, ReadFile(FUS, "UTF-8"), "gbk")
  24. Function ReadFile(FUS, CharSet)
  25.     Dim Str
  26.     Set ADOStrm = CreateObject("Adodb.Stream")
  27.     ADOStrm.Type = 2
  28.     ADOStrm.mode = 3
  29.     ADOStrm.charset = CharSet
  30.     ADOStrm.Open
  31.     ADOStrm.loadfromfile FUS
  32.     S = ADOStrm.readtext
  33.     ADOStrm.Close
  34.     Set ADOStrm = Nothing
  35.     ReadFile = S
  36. End Function
  37. Function WriteToFile (FUD, S, CharSet)
  38.     Set ADOStrm = CreateObject("Adodb.Stream")
  39.     ADOStrm.Type = 2
  40.     ADOStrm.mode = 3
  41.     ADOStrm.charset = CharSet
  42.     ADOStrm.Open
  43.     ADOStrm.WriteText S
  44.     ADOStrm.SaveToFile FUD, 2
  45.     ADOStrm.flush
  46.     ADOStrm.Close
  47.     Set ADOStrm = Nothing
  48. End Function
复制代码

TOP

返回列表