由于最初的不合现规划,导致一个目录下好多子目录及文件,而经常要备份的又只是其中几个目录及文件,其它的还不能删除。所以我要按住CTRL键一个个点鼠标,然后右键进行压缩备份,甚是麻烦。于是就做了个BAT来调用WINRAR进行备份,这样就只在鼠标双击一下BAT文件就备份好了。
本人不怎么会写BAT,语法都是网上找的,但都没有我这样需求的现成示例,摸索了好久写出以下代码,保留一下也共享一下。如果有哪位高手能帮我把FOR循环次数做成自动识别的就万份感谢了
@echo off
echo "WinRAR BAT --- ANSI/ASCII"
:: 这里定义WinRAR所在路径
set RarPath="C:\Program Files (x86)\WinRAR\winrar.exe"
:: 这里是压缩包存放路径和文件名(不能含有空格)
set TargFile=D:\Software\temp_.rar
:: 这里是将要被打包的文件夹和文件(不能含有空格)
:: 多个文件请以 SrcFileN (N=1,2,3...)
set SrcFile1=D:\Software\test1
set SrcFile2=D:\Software\test2
set SrcFile3=D:\Software\test3.txt
:: 下面括号里的1,2,3...要对上面SrcFileN对应
setlocal enableDelayedExpansion
set SrcFiles=
for %%I in (1,2,3) do (
::set SrcFiles=!SrcFiles!%%SrcFile%%I%%
set SrcFiles=!SrcFiles!!SrcFile%%I!
)
:: 以下是执行压缩
:: %RarPath% a -inul -r %TargFile% %SrcFile1% %SrcFile2% %SrcFile3%
%RarPath% a -inul -r %TargFile% %SrcFiles%
:: 将压缩完成的文件按指定格式,附加日期进行重命名,如果存在重名,则后缀 _1, _2, _3...
:: 以下1,2,3...是重名时可附加的序号
ren %TargFile% "jni_%date:~0,4%%date:~5,2%%date:~8,2%_GD&ST.rar"
for %%I in (1,2,3,4,5,6,7,8,9) do (
if errorlevel 1 (
ren %TargFile% "jni_%date:~0,4%%date:~5,2%%date:~8,2%_GD&ST_%%I.rar"
)
)