标题: [文件操作] 批处理合并图片and压缩包to 自定义JR类型图片文件 [打印本页]
作者: SmallK 时间: 2012-4-12 20:03 标题: 批处理合并图片and压缩包to 自定义JR类型图片文件
程序功能:
将图片文件和压缩包文件合并为jr文件
(此jr文件具有图片属性,可用缩略图模式预览;右键菜单独有“用Winrar打开”选项。相当为一个“带缩略图的压缩包文件”)
使用方法:
1.直接运行:注册及反注册jr文件
(系统未注册jr文件的情况下未注册,否则为反注册)
2.拖拽一个图片文件及一个压缩包文件到此批处理文件上:合并生成一个jr文件
(新jr文件的文件名为%~n1,即你鼠标点着拖到P上的文件的名字。)
最新代码如下:
欢迎大家测试反馈!- @echo off
- color e&title JR图片压缩包
- setlocal enabledelayedexpansion
- ::变量设置
- set #h=echo.^&echo.^&echo
- set #=echo
- set @rx=rar zip 7z
- set @px=jpg jpeg gif png
- if "%~2" equ "" (
- reg query HKEY_CLASSES_ROOT\.jr 2>nul>nul
- if errorlevel 1 (
- %#h%注册jr类型文件&echo.
- call :_aj >nul
- ) else (
- %#h%反注册jr类型文件&echo.
- call :_dj >nul
- )
- ping -n 2 127.1 >nul&exit /b
- ) else (
- for %%a in (!@rx!) do (
- if /i "%~x1" equ ".%%a" set @r=%1
- if /i "%~x2" equ ".%%a" set @r=%2
- )
- for %%a in (!@px!) do (
- if /i "%~x1" equ ".%%a" set @p=%1
- if /i "%~x2" equ ".%%a" set @p=%2
- )
- if "!@r!!@p!" equ "" (%#h%请正确选择图片及压缩包文件!&echo.&goto _end) else (
- if not defined @r %#h%没有找到压缩包文件!&echo.&goto _end
- if not defined @p %#h%没有找到图片文件!&echo.&goto _end
- )
- if not exist "%~dp0\%~n1.jr" (
- copy /b !@p! + !@r! %~dp0\%~n1.jr >nul
- if errorlevel 0 %#h%合并成功!&echo.&ping -n 2 127.1 >nul&exit
- ) else (
- %#h%当前目录下存在同名文件!&echo.&goto _end
- )
- )
- :_end
- pause >nul
- exit /b
- ::::::::::::::::::::::::::::::调用区::::::::::::::::::::::::::::::
- :_aj
- reg add HKEY_CLASSES_ROOT\.jr /ve /d jrfile /f
- reg add HKEY_CLASSES_ROOT\.jr /v "Content Type" /d "image/jr" /f
- reg add HKEY_CLASSES_ROOT\.jr /v PerceivedType /d image /f
- reg add HKEY_CLASSES_ROOT\.jr\OpenWithList /f
- reg add HKEY_CLASSES_ROOT\.jr\OpenWithProgids /v jrfile /t reg_none /f
- reg add HKEY_CLASSES_ROOT\.jr\PersistentHandler /ve /d {098f2470-bae0-11cd-b579-08002b30bfeb} /f
- reg add HKEY_CLASSES_ROOT\.jr\UndoClass /ve /d jrfile /f
- ::缩略图预览属性
- reg add HKEY_CLASSES_ROOT\.jr\ShellEx\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1} /ve /d {7376D660-C583-11d0-A3A5-00C04FD706EC} /f
- reg add HKEY_CLASSES_ROOT\.jr\CLSID /ve /d {25336920-03F9-11cf-8FD0-00AA00686F13} /f
- reg add HKEY_CLASSES_ROOT\jrfile /ve /d "007科技jr图像" /f
- reg add HKEY_CLASSES_ROOT\jrfile /v EditFlags /t reg_dword /d 00010000 /f
- reg add HKEY_CLASSES_ROOT\jrfile /v FriendlyTypeName /t REG_EXPAND_SZ /d "@%SystemRoot%\system32\shimgvw.dll,-303" /f
- reg add HKEY_CLASSES_ROOT\jrfile /v ImageOptionFlags /t reg_dword /d 0x3 /f
- reg add HKEY_CLASSES_ROOT\jrfile\CLSID /ve /d {25336920-03F9-11cf-8FD0-00AA00686F13} /f
- reg add HKEY_CLASSES_ROOT\jrfile\DefaultIcon /ve /d "shimgvw.dll,3" /f
- reg add HKEY_CLASSES_ROOT\jrfile\shell
- reg add HKEY_CLASSES_ROOT\jrfile\shell\open /v MuiVerb /d "@shimgvw.dll,-550" /f
- reg add HKEY_CLASSES_ROOT\jrfile\shell\open\command /ve /d "rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %%1" /f
- reg add HKEY_CLASSES_ROOT\jrfile\shell\open\DropTarget /v Clsid /d {E84FDA7C-1D6A-45F6-B725-CB260C236066} /f
- reg add HKEY_CLASSES_ROOT\jrfile\shell\rarpic /ve /d "用 Winrar 打开 (&W)" /f
- reg add HKEY_CLASSES_ROOT\jrfile\shell\rarpic\command /ve /d "winrar.exe %%1" /f
- assoc .exe=exefile
- goto :eof
- ::::::::::::::::::::::::::::::调用区::::::::::::::::::::::::::::::
- :_dj
- reg delete HKEY_CLASSES_ROOT\.jr /f
- reg delete HKEY_CLASSES_ROOT\jrfile /f
- assoc .exe=exefile
- goto :eof
复制代码
鉴于方便测试、及保持代码的标准性,特发上附件。
附件内含有批处理程序及一个测试图片和压缩包文件。
作者: gawk 时间: 2012-4-12 20:07
遇到什么了神马问题,报错信息是神马?
作者: SmallK 时间: 2012-4-12 20:12
目前如果鼠标点住压缩包文件拖到批处理文件上程序显示的是 图片文件……
作者: gawk 时间: 2012-4-12 21:58
回复 3# SmallK
那很明显是判断文件类型那一段出错了啊,把@echo off删掉,看看那一段是怎么执行的。
作者: SmallK 时间: 2012-4-12 23:03
本帖最后由 SmallK 于 2012-4-12 23:28 编辑
判断图片和压缩包的问题已经解决。
以下是最新代码:
- ::@echo off
- color e&title 合并rar到图片
- setlocal enabledelayedexpansion
- ::变量设置
- set #h=echo.^&echo.^&echo
- set #=echo
- set @rx=rar zip 7z
- set @px=jpg jpeg gif png
- if "%2" equ "" (
- !#h!操作错误!请拖拽图片及压缩包到本文件上!&echo.
- goto _end
- ) else (
- for %%a in (!@rx!) do (
- if /i "%~x1" equ ".%%a" set @r=%1
- if /i "%~x2" equ ".%%a" set @r=%2
- )
- for %%a in (!@px!) do (
- if /i "%~x1" equ ".%%a" set @p=%1
- if /i "%~x2" equ ".%%a" set @p=%2
- )
- if not "!@r!" equ "" (echo !@r!) else (!#h!没有找到压缩包!&goto _end)
- if not "!@p!" equ "" (echo !@p!) else (!#h!没有找到图片!&goto _end)
- copy !@p! /b + !@r! %~dp0\%~n1.jr
- )
- :_end
- pause >nul
- exit
复制代码
作者: gawk 时间: 2012-4-12 23:08
回复 5# SmallK
然后呢?还有啥问题?
作者: SmallK 时间: 2012-4-13 07:59
经过一整晚的努力,代码基本已经成型了。已在顶楼更新~
作者: hanyeguxing 时间: 2012-4-13 09:06
本帖最后由 hanyeguxing 于 2012-4-13 10:09 编辑
“将图片文件和压缩包文件合并为jr文件”?这些图片是额外的预览文件?那不就体积增大了吗?如果整个压缩包都是图片,推荐:
方法1,转换rar为zip,acdsee支持zip压缩文件的预览,缺点是对内部文件名的中文支持时产生错误,效果如下:
方法2,转换rar为tiff文件,该图象为多帧可加注。
如果直接位图不压缩为jpg等,则可以用windows图象与传真查看器与acdsee预览,缺点是体积过大,效果如下:
如果内部压缩为jpg,则只可以用acdsee预览,缺点是不能用windows图象与传真查看器,效果如下:
以上各acdsee版本均为:4.0 。以上各acdsee操作可以用 Microsoft Office 替代。
作者: cutebe 时间: 2012-4-16 22:03
这个用打处理不能解压吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |