楼 主
怎样把多个文件(文件名不确定)按一定规律分别压缩
发表于 2007-07-01 17:24 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
每次别的程序会拷多个文件到一个目录下(即每次每个文件的文件名并不同),我想编批处理把拷到该目录的文件夹按规律分别压缩起来。比如说现在拷入该目录下3个文件,文件名分别是1.txt 1-1.txt 2.txt,我用
rar a file1 1.txt 1-1.txt
rar a file2 2.txt
把三个文件分别压缩成fil1.rar和file2.rar两个压缩包
但下次拷入的文件名会不同,事先并不能确定拷入文件的文件名,那我该怎么办呢?
第 2 楼
发表于 2007-07-01 19:57 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 19年会员 UID 59080
状态 离线
第 3 楼
发表于 2007-07-01 20:24 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
文件不是特别有规律,比如说有下面五个文件
answer1.txt
附件_answer1.jpg
answer2.txt
附件_answer2.jpg
answer3.txt
1和2个文件压缩在一起
3和4个文件压缩在一起
第5个文件单独压缩在一起
第 4 楼
发表于 2007-07-01 20:31 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 19年会员 UID 59080
状态 离线
这样成吗?
rar a answer1 *answer1*
rar a answer2 *answer2*
rar a answer3 *answer3*
第 5 楼
发表于 2007-07-01 21:20 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
对不起,我讲得不清楚,那个answer后面的数字是变化的,并不是固定的1 2 3, 每次递增,但每次文件的数量不同,因此并不预知answer后的数字是多少。
但"answer*.txt"有时会带一个“附件_answer*.jpg",我想把后接相同数字的两个文字压缩在一起
第 6 楼
发表于 2007-07-02 12:59 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
我觉得这里面涉及到一个怎样把文件名读出并赋予一个变量的问题,比如这次生成的两个有联系的文件名是
answer225.txt
附件_answer225.txt
关键是怎样知道answer后的数字是多少(数字是变化的),同时把这个数字赋予给一个变量(如%a%),以方便rar来调用
第 7 楼
发表于 2007-07-02 13:07 · 中国 江西 赣州 电信
高级用户
★★
论坛上抢劫的
积分 551 发帖 246 注册 2006-09-21 12:35 19年会员 UID 63270
状态 离线
有附件的话是不是附件一定是以“附件_*”这样的形式呢?
第 8 楼
发表于 2007-07-02 23:29 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
第 9 楼
发表于 2007-07-03 11:37 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962 发帖 2,753 注册 2003-04-16 00:00 23年会员 UID 1565 性别 男 来自 河北保定
状态 离线
问题的关键就是将同一类型的文件的基本名,也就是answer???取出来并作为参数传递给rar命令。
如果文件名前面的answer字符串是固定的话,这事儿就好办了。
用for命令可以取出具有共同特征的基本文件名,然后再将这个基本文件名传递给一个子函数作为参数来实现压缩。
大致应该是下面这个样子:
@echo off
for /f %%i in ('dir /b answer*.txt') do call :_rar %%~ni
goto :eof
:_rar
rar -a %1 *%1.*
goto :eof
需要楼主再根据实现情况完善。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子 ”和“
这个帖子 ”并努力遵守,如果可能,请告诉更多的人!
第 10 楼
发表于 2007-07-03 21:58 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
能麻烦解释一下吗,我对for语句并不是特别熟
“ do call :_rar %%~ni”是怎么和下面的压缩联系起来的?
第 11 楼
发表于 2007-07-04 08:32 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962 发帖 2,753 注册 2003-04-16 00:00 23年会员 UID 1565 性别 男 来自 河北保定
状态 离线
:_rar相当于一个子函数,它根据传递过来的参数(%1)实现对特定的文件进行压缩操作,而for命令的作用就是调用这个子函数,每次传递一个特定的参数,而这个特定参数就是前面提到的一组文件的基本名,例如answer225。%%~ni就代表这个基本名。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子 ”和“
这个帖子 ”并努力遵守,如果可能,请告诉更多的人!
第 12 楼
搞定了,谢谢,想再问climbing一个问题
发表于 2007-07-05 23:54 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
谢谢,想再问一个问题:有下面多个文件,文件名中的数字变化且长度不定,我怎样能把这些数字分别提取出来并赋给一个变量,以方便别的命令调用呢?
answer1号.txt
answer33号.txt
answer338号.txt
第 13 楼
发表于 2007-07-06 09:27 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962 发帖 2,753 注册 2003-04-16 00:00 23年会员 UID 1565 性别 男 来自 河北保定
状态 离线
你学一下set的字符串替换用法就行了。
set a=answer1号.txt
set a=%a:answer=%
set a=%a:号.txt=%
echo %a%
Result:
F:\WORK\DOS>set a=answer1号.txt
F:\WORK\DOS>set a=%a:answer=%
F:\WORK\DOS>set a=%a:号.txt=%
F:\WORK\DOS>echo %a%
1
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子 ”和“
这个帖子 ”并努力遵守,如果可能,请告诉更多的人!
第 14 楼
谢谢
发表于 2007-07-07 11:27 · 中国 福建 厦门 电信
初级用户
★
积分 32 发帖 13 注册 2006-03-27 23:17 20年会员 UID 52913
状态 离线
谢谢,会用了,不过在windows里关于set的帮助里好象看不到你的这种用法啊
第 15 楼
发表于 2007-07-09 11:39 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962 发帖 2,753 注册 2003-04-16 00:00 23年会员 UID 1565 性别 男 来自 河北保定
状态 离线
Environment variable substitution has been enhanced as follows:
%PATH:str1=str2%
would expand the PATH environment variable, substituting each occurrence
of "str1" in the expanded result with "str2". "str2" can be the empty
string to effectively delete all occurrences of "str1" from the expanded
output. "str1" can begin with an asterisk, in which case it will match
everything from the beginning of the expanded output to the first
occurrence of the remaining portion of str1.
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子 ”和“
这个帖子 ”并努力遵守,如果可能,请告诉更多的人!
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正