标题: [文本处理] 批处理搜集所有盘符中特定文件并进行压缩,代码写好了,如何改进? [打印本页]
作者: pplive517 时间: 2011-9-1 17:10 标题: 批处理搜集所有盘符中特定文件并进行压缩,代码写好了,如何改进?
我的目的是把盘符中所有特定非英文和数字组合名字的*.doc文件进行搜集到特定文件夹下,并进行压缩,总感觉效率不高,有没有好的方法改进,有不足支持请多多指教,谢谢了O(∩_∩)O~:- @echo off&setlocal enabledelayedexpansion
- title 复制文件
- color 07
- ::创建文件夹
- Md f:\word 2>nul
- ::对各盘符特定文件查找,对文件名进行匹配,合适文件进行复制
- for %%i in (c d e f g) do (
- For /f "delims=" %%j in ('dir /s /b "%%i:\*.xls" "%%i:\*.doc"') do (
- set file=%%~nj
- set file=!file:*_=!
- echo !file!|findstr /ibe "[0-9,a-z,A-Z]*">nul&&echo 无中文||Copy /y "%%j" f:\word
- )
- )
- )
- ::获取winrar的完全路径。
- 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
- ::获取rar.exe的完全路径
- Set rarpath=%winrar:winrar.exe=rar.exe%
- ::修改此处执行rar命令
- "%rarpath%" a "f:\2" "f:\word"
- ::删除当前文件夹,擦出痕迹
- ::rd/s/q f:\word
- ::运行完自动退出
- pause>nul
- exit
复制代码
作者: hfg1977 时间: 2011-9-1 17:59
指出几点:
1. 全盘搜索面对现在一个分区都在100G以上的硬盘, 是非常耗时,且损耗资源的行为,也有损硬盘设备.对于SSD也是.
除非是单位的机子一般自己的机子不会不知道文件位置.
2.RAR文件的打包并不需要那个copy一遍再打包再删除的过程.
可以使用文件列表的形式进行直接打包. 如下示例:
- rar u -m5 -inul -ep1 -ed "%~dp1.\%~n1.rar" @"%~dp0.\filelist.txt"
复制代码
3. 个人认为7z的压缩率比rar高.
- 7za a -mx=9 -scsWIN "%~dp1.\%~n1.rar" @"%~dp0.\filelist.txt"
复制代码
作者: pplive517 时间: 2011-9-1 20:09
回复 2# hfg1977
如果是7z的话,需要机子安装7z的软件,针对大多数机子都安装winrar,所以选择了rar压缩》
作者: hfg1977 时间: 2011-9-2 05:36
测试了一下,RAR路径获取错误
修正:- ::获取winrar安装路径,设置rar绝对路径
- For /f "skip=4 tokens=3" %%i in ('Reg Query "HKCR\Applications\WinRAR.exe\shell\open\command" /ve') do (
- echo.%%~i&Set rar_exe=%%~dpi.\rar.exe&call echo.%%rar_exe%%
- )
复制代码
作者: CrLf 时间: 2011-9-2 08:32
回复 4# hfg1977
ftype rarfile 更方便
作者: hfg1977 时间: 2011-9-2 10:39
RES
我的注册表中并没有 "rarfile" 文件类型, 只是在 ".rar" 中进行注册.
作者: CrLf 时间: 2011-9-2 11:28
回复 6# hfg1977
哦,应该是复制代码
作者: pplive517 时间: 2011-9-5 15:13
回复 4# hfg1977
不会吧,我的可以正常通过,换用的代码反而出错,无法解压,winrar安装的路径和系统的版本也能影响其在注册表的位置吗,
如何才能在各个版本系统和不知道安装路径的时候均能正常工作呢?
作者: Hello123World 时间: 2011-9-5 15:17
嘿嘿,我在百度知道的回答……
作者: hfg1977 时间: 2011-9-5 17:25
回复 8# pplive517
- E:\DOS>reg Query "HKCR\Applications\WinRAR.exe\shell\open\command" /ve
-
- ! REG.EXE VERSION 3.0
-
- HKEY_CLASSES_ROOT\Applications\WinRAR.exe\shell\open\command
- <没有名称> REG_SZ "E:\RUANJIAN\winrar3.9\WinRAR.exe" "%1"
-
-
- E:\DOS>
复制代码
winXP sp3
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |