|
|
整了个Sendto版本,请高手指点指点.
看了老毛桃的思路,也做了一个Sendto版本,code 如下:
@echo off
set DestinationDi=1
if {%1}=={} goto _end
rem 是否盘符,设置当前目录
set curdir=%~sf1
set bfirst=0
rem 若在单个cab文件上发送,同时不存在参数文件,则生成参数文件,否则压缩
if {%2}=={} (
if /I {%~x1}=={.cab} (
if not exist "%~dp1~not_cab~" (
echo 单文件压缩>"%~dp1~not_cab~"
goto _end0
)
)
)
if not {"%~n1"}=={""} set curdir=%~sdp1
:_begin
cd /d "%curdir%"
echo ;压缩文件列表> ~tmp.ddf
rem 光盘
if exist "%curdir%\~tmp.ddf" goto _begin2
echo 输入存储路径:(按C退出)
set curdir=%temp%
set /p curdir=%temp%
if /I "%curdir%"=="C" goto _end0
goto _begin
:_begin2
rem dir D:\GreenTool\我的注册表\IE菜单\~not_cab~
rem 若是当前目录下存在~not_cab~_文件,则单个文件压缩
if exist "%curdir%~not_cab~" goto _notcab
echo .set CompressionType=LZX ;压缩类型>> ~tmp.ddf
echo .set CompressionMemory=21 >> ~tmp.ddf
echo .set MaxDiskSize=CDROM ;一个目录>> ~tmp.ddf
echo .set Cabinet=On ;打包>> ~tmp.ddf
echo .set Compress=On ;压缩>> ~tmp.ddf
echo .set FolderSizeThreshold=5000000>> ~tmp.ddf
echo .set CabinetNameTemplate=%~n1%.cab ;压缩文件(不含路径) >> ~tmp.ddf
echo .set DiskDirectoryTemplate="%curdir%" ;压缩路径(双引号) >> ~tmp.ddf
goto _iscab
:_notcab
if {}=={%1} goto _end
Set C0=MAKECAB /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On /D FolderSizeThreshold=5000000
rem cd /d "%~dp1"
rem 若是文件,则压
dir "%~f1" /ad | find /I "<dir>" >nul
if {%errorlevel%}=={1} %C0% /D DiskDirectoryTemplate=%curdir% "%~f1"
shift
goto _notcab
:_iscab
if {}=={%1} goto _endcab
rem 若是文件
dir "%~f1" /ad | find /I "<dir>" >nul
if {%errorlevel%}=={1} (
if {"%bfirst%"}=={"0"} (
echo .set DestinationDir="%~p1" ; 存储路径>> ~tmp.ddf
echo .set SourceDir="%~dp1" ; 源路径>> ~tmp.ddf
set bfirst=1
)
echo "%~nx1">> ~tmp.ddf
) else (
for /R %1 %%i in (.) do (
echo .set DestinationDir="%%~pnxi" ; 存储路径(加双引号)>> ~tmp.ddf
echo .set SourceDir="%%~dpnxi" ; 源路径(加双引号) >> ~tmp.ddf
for /F "usebackq delims=," %%j in (`dir /b /A-D "%%i"`) do ( if exist %%~dpnxi\%%j @echo "%%j" >> ~tmp.ddf )
)
set bfirst=0
)
shift
goto _iscab
:_endcab
makecab /f ~tmp.ddf
:_end
explorer /e, "%curdir%"
:_end0
解释:
直接将上述内容存为文件放入sendto文件夹即可.
用户选中一批文件或一个,会按目录生成cab压缩文件,不过是按绝对路径生成(美中不足).
但全部搬到根目录,则可以.
另外,若在当前文件夹下有~not_cab~文件,则会生成 XXX.XX_形式的压缩文件.
一个生成~not_cab~文件的懒方法是,首先生成一个.cab文件,再通过此cab文件的Sendto就可生成
~not_cab~文件.
一些垃圾文件没有删掉,为的是大家能够明白一些东西.自己可(修改)删之.
对于如同光盘类似的介质,会要求输入保存路径,模认是临时文件夹.按C退出.
在Sendto里最好用快捷方式,可以最小化运行.不给大家截图了,比较简单.
内容纯属学习,出问题我不管.
借用了一些老毛桃的东西,在此谢过.
希望能顶上一段时间.操作方便,基本能满足帖子里的要求.花了老半天的时间才大体上调试好.
另外,我的一个注册名"菜菜鹰"忘记密码了,本人想恢复那个账户,望坛主告知方法,或私下解决.主要是安全提问不知道是啥了.
[ 本帖最后由 caicaiying 于 2006-11-5 03:41 PM 编辑 ] |
|