作者ryousuke ( )
看板EZsoft
标题Re: [心得] 7-Zip 解压缩
时间Wed Jan 18 21:59:36 2012
※ 引述《ryousuke ( )》之铭言:
: 在桌面上存成7z.reg後左键点选两下後即在右键上新增7z这个解压缩项目
: 2.建立处理批次档案
: ---------请复制除了本行以外的以下文字---------
: for /f "tokens=*" %%a in ('dir /b /a-d %1') do set filename=%%~na
: md "R:\%filename%"
: "C:\Program Files\7-Zip\7z.exe" x %1 -o"R:\%filename%"
: pause
: ---------请复制除了本行以外的以上文字---------
: 开启记事本後贴上然後另存为7z.bat於C:\
: 预设新增同压缩档档名资料夹的路径我设在R:\
: 请依自己的需求更改路径
在网路研究过後发现命令可以简化
7z.bat内容请替代为
---------请复制除了本行以外的以下文字---------
"C:\Program Files\7-Zip\7z.exe" x %1 -o"R:\%~n1"
pause
---------请复制除了本行以外的以上文字---------
1F:→ y3k:我觉得7zip缺少的比较重要功能是批次不记录路径压缩 01/09 11:32
2F:→ y3k:WinRAR还在我电脑里的原因也只是这个01/09 11:33
3F:→ y3k:WinRAR的时候可以圈选多个资料夹或档案 选单加入压缩档後01/09 12:18
4F:→ y3k:在<档案>分页勾选"一个档案建立一个压缩档"并在上方档案路径01/09 12:26
5F:→ y3k:下拉选择"不要储存路径"01/09 12:20
6F:→ y3k:这个功能在整理图片扫本等等的东西时是很方便的01/09 12:22
7F:→ y3k:在<档案>分页勾选"一个档案建立一个压缩档"并在上方档案路径01/09 12:26
说真的压资料不要资料夹的做法蛮神奇的
我试着去处理不过一直不顺利
直到发现7z.exe可以汇入filelist压缩
不过一直失败
直到我发现filelist文字档的编码必须是utf-8
如果编码是ANSI的话会格式错误
一开始我想找可以将文字档从ANSI转码成utf-8的工具
不过中途发现命令提示字元可以输出Unicode-LE
还有ConvertZ的Console版ConCmd可以将Unicode-LE转成utf-8
处理的流程是这样
先用命令提示字元下制作filelist
再从Unicode-LE转码成utf-8後
用7z.exe读取filelist压缩
方法如下
1.安装7-Zip 4.65或以上版本
2.下载ConCmd Ver 1.5并解压缩到C:\concmd15
http://www.megaupload.com/?d=L239PRVU
3.建立右键选单
---------请复制除了本行以外的以下文字---------
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\7za\command]
@="C:\\7za.bat \"%1\""
---------请复制除了本行以外的以上文字---------
在桌面上存成7za.reg後左键点选两下後即在右键上新增7za这个压缩项目
2.建立处理批次档案
---------请复制除了本行以外的以下文字---------
set list=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
cmd /u /c dir /s/b/A:-D "%~dpn1">%temp%\%list%.txt
"C:\concmd15\ConCmd.exe" /i:ULE /o:utf8 %temp%\%list%.txt
"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt
pause
del %temp%\%list%.txt
---------请复制除了本行以外的以上文字---------
开启记事本後贴上然後另存为7za.bat於C:\
预设压缩档路径我设在R:\00.7z
请依自己的需求更改路径与压缩档档名
资料夹按右键後点7za後就会制作档案清单後压缩
唯一的问题就是如果有同档名档案将会压缩失败
目前我只做出单一资料夹下的档案压缩
点选多个资料夹後再压缩的scrpit目前还没做出来
请大家多多回应讨论
参考资料:
retrieve current directory name in batch
http://www.msfn.org/board/topic/
56320-retrieve-current-directory-name-in-batch/
DIR
Display a list of files and subfolders
http://ss64.com/nt/dir.html
Windows : 在 cmd 下的 dir 输出 UTF-8 编码的清单
http://gsyan888.blogspot.com/2011/04/windows-cmd-dir-utf-8.html
漫谈Windows XP环境变数
http://texhello.pixnet.net/blog/post/
21374901-%E6%BC%AB%E8%AB%87windows-xp%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.41.132.105
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 22:14)
8F:推 s25g5d4:使用DATE当变数是不切实际的 因为会随控制台中的地区语言 01/18 22:39
9F:→ s25g5d4:设定而有不同... 01/18 22:39
用date变数只是一时之间用来当filelist的档名
压缩完就会清掉了
10F:→ s25g5d4:另外 UTF-8不用这样弄 可以用chcp 65001 01/18 22:39
可以详细说明方法吗
谢谢
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 22:43)
11F:推 s25g5d4:bat开头使用chcp 65001 所有输出资料都将会是UTF-8编码 01/18 22:46
我试试看把chcp 65001加进去看看
12F:→ s25g5d4:如果你有去看过你产生的list txt 会发现它的档名是 01/18 22:47
13F:→ s25g5d4:周三 21201.txt 虽然不会发生问题 不过感觉很怪就是了 01/18 22:47
14F:→ s25g5d4:反正那不重要 弄完就删掉基本上是没差.... 01/18 22:48
没有喔
输出的是YYYYMMDD.txt
你可以拿那一段script跑跑看
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 22:52)
15F:推 s25g5d4:唔 在我的电脑跑出来是这样... 01/18 22:56
我是在xp跑的
你的作业系统是win7吗
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 22:57)
16F:推 s25g5d4:Yes 01/18 23:01
那我再找个固定一点的变数好了
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:15)
17F:推 s25g5d4:Okay, 我发现问题了 问题在我刚刚提过的chcp...囧 01/18 23:10
18F:推 s25g5d4:控制台的地区及语言选项也有差... 01/18 23:14
我把chcp加进去会卡住
不知道是什麽问题
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:16)
19F:推 s25g5d4:把bat档丢给我吧 01/18 23:18
---------请复制除了本行以外的以下文字---------
chcp 65001
set list=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
cmd /c dir /s/b/A:-D "%~dpn1">%temp%\%list%.txt
"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt
pause
del %temp%\%list%.txt
---------请复制除了本行以外的以上文字---------
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:21)
20F:推 s25g5d4:恩 没错 就是%DATE%的问题 01/18 23:21
21F:→ s25g5d4:改成set list=%RANDOM% 01/18 23:21
改了list也出不来
应该在chcp 65001执行完script就结束了
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:24)
22F:推 s25g5d4:难道说XP不能改codepage....囧 01/18 23:25
可以改
不过执行完chcp 65001後script就中断了
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:26)
请问s25g5d4桑批次档有没有换行符号
我找到解法了
不过太长需要换行
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:36)
23F:推 s25g5d4:\n 01/18 23:37
24F:→ s25g5d4:刚刚开了VM来看 XP cmd对UTF-8的支援性不佳 01/18 23:38
只有字型支援不佳
字码应该都可以正常处理
※ 编辑: ryousuke 来自: 114.41.132.105 (01/18 23:41)
"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt
s25g5d4桑可以帮我写一下上面的命令换行的方法吗
我换行一直失败
※ 编辑: ryousuke 来自: 114.41.132.105 (01/19 00:17)
25F:→ s25g5d4:单一指令的话不能换行.... 01/19 00:22
26F:推 s25g5d4:我想改用js or vbs了...bat真OOO麻烦 01/19 00:24
我放弃了
修改後的scrpit在下面
请大家把三行整理成一行吧
s25g5d4桑你看要不要出js或vbs版的scrpit
※ 编辑: ryousuke 来自: 114.41.132.105 (01/19 00:36)