找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25746|回复: 9

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

[复制链接]
发表于 2011-9-1 17:10:58 | 显示全部楼层 |阅读模式
我的目的是把盘符中所有特定非英文和数字组合名字的*.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
复制代码
发表于 2011-9-1 17:59:32 | 显示全部楼层
指出几点:
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"
复制代码
 楼主| 发表于 2011-9-1 20:09:53 | 显示全部楼层
回复 2# hfg1977


    如果是7z的话,需要机子安装7z的软件,针对大多数机子都安装winrar,所以选择了rar压缩》
发表于 2011-9-2 05:36:46 | 显示全部楼层
测试了一下,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. )
复制代码
发表于 2011-9-2 08:32:53 | 显示全部楼层
回复 4# hfg1977

ftype rarfile 更方便
发表于 2011-9-2 10:39:41 | 显示全部楼层
RES
我的注册表中并没有 "rarfile" 文件类型, 只是在 ".rar" 中进行注册.
发表于 2011-9-2 11:28:13 | 显示全部楼层
回复 6# hfg1977


    哦,应该是
  1. ftype winrar
复制代码
 楼主| 发表于 2011-9-5 15:13:17 | 显示全部楼层
回复 4# hfg1977


    不会吧,我的可以正常通过,换用的代码反而出错,无法解压,winrar安装的路径和系统的版本也能影响其在注册表的位置吗,
如何才能在各个版本系统和不知道安装路径的时候均能正常工作呢?
发表于 2011-9-5 15:17:00 | 显示全部楼层
嘿嘿,我在百度知道的回答……
发表于 2011-9-5 17:25:08 | 显示全部楼层
回复 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:51 , Processed in 0.009648 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表