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

[文本处理] 批处理搜集所有盘符中特定文件并进行压缩,代码写好了,如何改进?

我的目的是把盘符中所有特定非英文和数字组合名字的*.doc文件进行搜集到特定文件夹下,并进行压缩,总感觉效率不高,有没有好的方法改进,有不足支持请多多指教,谢谢了O(∩_∩)O~:
  1. @echo off&setlocal enabledelayedexpansion
  2. title 复制文件
  3. color 07
  4. ::创建文件夹
  5. Md f:\word 2>nul
  6. ::对各盘符特定文件查找,对文件名进行匹配,合适文件进行复制
  7. for %%i in (c d e f g) do (
  8. For /f "delims=" %%j in ('dir /s /b "%%i:\*.xls" "%%i:\*.doc"') do (
  9. set file=%%~nj
  10. set file=!file:*_=!
  11. echo !file!|findstr /ibe "[0-9,a-z,A-Z]*">nul&&echo 无中文||Copy /y "%%j" f:\word
  12. )
  13. )
  14. )
  15. ::获取winrar的完全路径。
  16. For /f skip^=2^ tokens^=2^ delims^=^"  %%i in ('Reg Query "HKEY_CLASSES_ROOT\Applications\WinRAR.exe\shell\open\command" /ve') do Set winrar=%%i
  17. ::获取rar.exe的完全路径
  18. Set rarpath=%winrar:winrar.exe=rar.exe%
  19. ::修改此处执行rar命令
  20. "%rarpath%" a "f:\2" "f:\word"
  21. ::删除当前文件夹,擦出痕迹
  22. ::rd/s/q f:\word
  23. ::运行完自动退出
  24. pause>nul
  25. exit
复制代码
code is my girlfriend!

指出几点:
1. 全盘搜索面对现在一个分区都在100G以上的硬盘, 是非常耗时,且损耗资源的行为,也有损硬盘设备.对于SSD也是.
   除非是单位的机子一般自己的机子不会不知道文件位置.
2.RAR文件的打包并不需要那个copy一遍再打包再删除的过程.
   可以使用文件列表的形式进行直接打包. 如下示例:
  1. rar u -m5 -inul -ep1 -ed "%~dp1.\%~n1.rar" @"%~dp0.\filelist.txt"
复制代码

3. 个人认为7z的压缩率比rar高.
  1. 7za a -mx=9 -scsWIN "%~dp1.\%~n1.rar" @"%~dp0.\filelist.txt"
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

回复 2# hfg1977


    如果是7z的话,需要机子安装7z的软件,针对大多数机子都安装winrar,所以选择了rar压缩》
code is my girlfriend!

TOP

测试了一下,RAR路径获取错误

修正:
  1. ::获取winrar安装路径,设置rar绝对路径
  2. For /f "skip=4 tokens=3"  %%i in ('Reg Query "HKCR\Applications\WinRAR.exe\shell\open\command" /ve') do (
  3. echo.%%~i&Set rar_exe=%%~dpi.\rar.exe&call echo.%%rar_exe%%
  4. )
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

回复 4# hfg1977

ftype rarfile 更方便

TOP

RES
我的注册表中并没有 "rarfile" 文件类型, 只是在 ".rar" 中进行注册.
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

回复 6# hfg1977


    哦,应该是
  1. ftype winrar
复制代码

TOP

回复 4# hfg1977


    不会吧,我的可以正常通过,换用的代码反而出错,无法解压,winrar安装的路径和系统的版本也能影响其在注册表的位置吗,
如何才能在各个版本系统和不知道安装路径的时候均能正常工作呢?
code is my girlfriend!

TOP

嘿嘿,我在百度知道的回答……

TOP

回复 8# pplive517

  1. E:\DOS>reg Query "HKCR\Applications\WinRAR.exe\shell\open\command" /ve
  2. ! REG.EXE VERSION 3.0
  3. HKEY_CLASSES_ROOT\Applications\WinRAR.exe\shell\open\command
  4.     <没有名称>  REG_SZ  "E:\RUANJIAN\winrar3.9\WinRAR.exe" "%1"
  5. E:\DOS>
复制代码

winXP sp3
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

返回列表