压缩批处理
① 如何写一个压缩文件的批处理或小程序
不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<#:
cls&echooff&cd/d"%~dp0"&modeconlines=5000
rem将当前目录里的多个.vcf文件按照不同数量分组进行压缩打包
set#=Anyquestion&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"exefile=C:ProgramFilesWinRARWinRAR.exe"
ifnotexist"%exefile%"(echo;"%exefile%"PathErrororNotInstalled&pause&exit)
set"self=%~f0"
powershell-NoProfile-ExecutionPolicybypass"Get-Content-literal'%~f0'|Out-String|Invoke-Expression"
echo;%#%+%$%%$%/%_%%z%
pause
exit
#>
$ext=@(".vcf");
$relation=@"
小红=20
小兰=30
小刚=33
小李=22
"@;
$codes=@'
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Runtime.InteropServices;
publicstaticclassExpDir
{
[DllImport("Shlwapi.dll",CharSet=CharSet.Unicode)]
(stringp1,stringp2);
publicstaticstring[]Sort(string[]f)
{
Array.Sort(f,StrCmpLogicalW);
returnf;
}
}
'@;
Add-Type-TypeDefinition$codes;
$self=get-item-liter$env:self-force;
$current=$self.Directory;
$arr=$relation.trim()-split'[ ]+';
$files=@(dir-literal$current.FullName|?{($ext-contains$_.Extension)-and($_-is[System.IO.FileInfo])}|%{$_.Name});
if($files.length-ge1){
$brr=[ExpDir]::Sort($files);$n=0;
for($i=0;$i-lt$arr.length;$i++){
if(-not[string]::IsNullOrWhiteSpace($arr[$i])){
$crr=$arr[$i].split('=',2);$zipname=$crr[0]+'.zip';
for($j=1;$j-le([int]$crr[1]);$j++){
if($n-lt$brr.count){
write-host$brr[$n];$n++;
}
}
write-host("==>"+$zipname+"`r`n")-ForegroundColoryellow;
}
}
}
如果使用WINRAR进行解压,其本身就自带此功能,在资源管理器中选中所有压缩文档,右击出现右键菜单,再选择“解压每个包到单独文件”即可。
如果一定要批处理命令,则可查看WINRAR的帮助文件,里边会有命令行格式的注解。
如果文件在不同文件夹中,可先搜索该上级文件夹下的所有“*.RAR”文件,再按上述方法操作。
③ 怎么用批处理解压压缩包到当前文件夹中
是利用winrar自带的一个命令行工具rar.exe来完成的
这个程序的命令行参数很丰富
直接在命令行输入"c:\program files\winrar\rar.exe"(假如你的rar是装在默认位置的话)
下面的批处理程序以一堆冒号为分界,分为三段
第一段,根据.rar文件的文件关联找到rar的安装目录
这里用到了ftype命令
在命令行中输入ftype就可以查看所有的文件关联信息
这里我们只关注Winrar
所以辅助了一个通道命令|find找到winrar所在的行
然后调用了一个叫做:getrarpath的子程序
这个子程序在第三段做了定义
它将path变量暂时设成了winrar的安装目录
path变量有什么用呢?当你输入一个程序名,没有路径时,系统会在当前路径和path指定的文件夹下寻找
这样我们输入rar.exe,系统就会自动在当前目录和C:\program files\winrar\下寻找rar.exe。这么写纯粹是为了用起来方便
第二段只有一句话
用到了rar.exe的e参数,即解压。可以指定路径,如
rar e d:\bc\ed.rar d:\test\
不指定的话则解压到当前目录
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
setlocal
for /f "delims== tokens=1,*" %%a in ('ftype^|find /i "winrar="') do call:getrarpath %%b
if not exist "%path%\rar.exe" echo 找不到WinRAR&exit /b
::根据.rar的文件关联查找rar所在的路径
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rar e d:\bc\ed.rar
::解压d:\bc\ed.rar到当前目录。当前目录指的是cmd的工作目录
exit /b
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:getrarpath
::将工作路径path设为winrar所在目录
path %~dp1
exit /b
④ 如何用批处理将一个文件压缩并加密码
用批处理将一个文件压缩并加密码的方法如下:
1、创建一个txt格式的文档,然后打开。
2、将以下代码复制到上面。
cls
@ECHO OFF
title 加密程序
if EXIST "上了锁的文件夹" goto UNLOCK
if NOT EXIST 加密文件 goto MDLOCKER
:CONFIRM
echo 您确定要锁定文件夹吗?(Y/N)‘Y=是-N=不’
set/p "cho=(more than)"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo 选择无效.
goto CONFIRM
:LOCK
ren 加密文件 "上了锁的文件夹"
attrib +h +s "上了锁的文件夹"
echo 文件夹已锁定
goto End
:UNLOCK
echo 请输入密码打开文件夹
set/p "pass=(more than)"
if NOT %pass%== (此处输入密码) goto FAIL
attrib -h -s "上了锁的文件夹"
ren "上了锁的文件夹" 加密文件
echo 文件夹解锁成功
goto End
:FAIL
echo 密码无效
goto end
:MDLOCKER
md 加密文件
echo 加密文件 成功创建
goto End
:End
3、这时候要设密码了,找到代码中 (此处输入密码) ,连扩号一起改成自己的密码。再点左上角文件,然后在点另存为,把文件名的后缀名改成 .bat 前面的自己设,再将保存类型改成所有文件。
4、运行bat文件(批处理文件),然后这时候会冒出个叫“加密文件”的文件夹,现在就可以把私密文件放入这个文件夹里了,然后再次运行这个批处理文件,见图2,点Y,然后按Enter回车键运行,然后文件不见了。
5、再次运行批处理文件,输入密码,然后文件夹又回来了。又可以再次使用或修改加密文件里的私密文件了。
6、这样就加密成功了,要重新隐藏(锁定)的话,就再次执行上面的步骤。