发新话题
打印

windows bat脚本7zip压缩文件夹,过滤文件夹

windows bat脚本7zip压缩文件夹,过滤文件夹

@echo off
::设置7z的命令行程序路径
set zip7=C:\Program Files\7-Zip\7z.exe
::设置压缩包保存路径
set Save=F:\backup
::当天日期,备份文件名
set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2%
::设置要打包压缩的文件夹
set www=F:\www

::备份命令 -xr!.svn过滤.svn文件夹
"%zip7%" a -tzip "%Save%\%curdate%.zip" "%www%" -mx0 -xr!.svn

::删除超过7天的备份--start--
forfiles /p "%Save%" /m *.zip -d -7 /c "cmd /c del /f @path"
任岁月荏苒 初衷不改 专注 细致 精益求精

TOP

7z 7zip 日期、时间,文件名

from:

http://hi.baidu.com/guicomeon/item/c0957c373972fbc52f8ec26e

先说明一点,要注意区分当前所使用的系统,中文系统和英文系统是有区别的。

@echo off
call :getFileName
7z a D:\Projects\%varname% D:\Projects\TestProject\*
goto :end
:getFileName
set vardate=%date:~6,4%-%date:~0,2%-%date:~3,2%
set vartime=%time:~0,2%-%time:~3,2%
set varname=[%vardate%-%vartime%].7z
:end
=========================================================================
将上述绿色部分保存到记事本中,并重命名为*.bat即可。对于中文系统,须将
set vardate=%date:~6,4%-%date:~0,2%-%date:~3,2%
替换为
set vardate=%date:~0,4%-%date:~5,2%-%date:~8,2%
其他不变。



set vardate=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo %vardate%

set varname="备份_%vardate%.zip"
echo  %varname%

pause
zip打包时,文件名中别用空格

-

转载于:https://www.cnblogs.com/runliuv/p/3494392.html
任岁月荏苒 初衷不改 专注 细致 精益求精

TOP

BAT批处理文件,脚本时间值%time:~0,2%%time:~3,2%%time:~6,2%的用法。


正常情况下我们的任务计划会有反馈数值,通过它可以判断这个任务计划上次是否运行正常。

代码 0 或 0x0:操作成功完成。
代码 1 或 0x1:调用的函数不正确或调用了未知函数。
代码 10 或 0xa:环境不正确。
代码 0x8009000f:常规访问被拒绝
任务计划程--历史记录里,操作完成,任务完成。但是在任务栏--上次运行结果显示不是操作成功完成(0x0),而是0x1。

通过以上错误代码,去排除调用的函数,发现是脚本文件里的定义时间机制,与设定任务计划时间不匹配造成无法正确运行脚本。

我在任务计划设置的时间是 AM 0:30

bat脚本时间设定如下:

set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

导致脚本无法正常运行的语句如下:

%time:~0,2%%time:~3,2%%time:~6,2%

如下的各个操作的意义如下:
%time:~0,2%  表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取2位字符,结果是小时字段数值
%time:~3,2%  表示指针从左向右偏移3位,然后从偏移处开始提取2位字符,结果是分钟字段数值
%time:~6,2%  表示指针从左向右偏移6位,然后从偏移处开始提取2位字符,结果是秒字段数值
//创建时间命名的文件夹

md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

用%time:~0,2%%time:~3,2%%time:~6,2%时有个问题, 就是如果TIME 是00点的时候,电脑显示的是0 不是00所以%time:~0,2%就报错了。

例子:2019-1-20时间1:26:20

set fileDate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

set fileDate2=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2%

echo fileDate:%fileDate%

echo fileDate2:%fileDate2%

fileDate:    20190120 12620(1前面是空格)
fileDate2:  2019012012620

总结:

1)如果要用%time:~0,2%%time:~3,2%%time:~6,2%  (运行脚本的时间一定是在10-23点区间,否则0-9(H)脚本调用函数错误,无法运行)

2)如果要用%time:~1,1%%time:~3,2%%time:~6,2%  (建议运行脚本的时间在0-9点这个区间,如果是>9点,

比如13点。会造成只显示个位数字3,比如2019-1-20 时间13:26:20 会显示2019012032620 从而影响时间的整体准确性)

3)或者是直接舍去时间,只用日期来定义文件名。

%date:~0,4%%date:~5,2%%date:~8,2%

比如2019-1-20 那么文件名会显示为20190120.(如果需求是每天做一个备份,那么这样命名是没什么影响的,

如果是一天需要N个备份文件,请参照上面两种时间设定)
任岁月荏苒 初衷不改 专注 细致 精益求精

TOP

按文件名排序

@echo off
for /f %%a in ('dir /b /on ??????.tif') do (
    if not defined min set "min=%%a"
    set "max=%%a"
)
ren "%min%" fm.tif
ren "%max%" fd.tif
http://www.bathome.net/viewthread.php?tid=36536&page=1
任岁月荏苒 初衷不改 专注 细致 精益求精

TOP

Windows 批处理文件添加和删除文件指定前缀

添加指定前缀
复制内容到剪贴板
代码:
@echo off
echo 此程序会给当前文件夹中的所有文件添加上你需要的前缀。
echo 关闭窗口,或者按Ctrl + C 键可结束程序执行。
echo -----------------------
set /p title=输入需要添加的文件前缀后,按回车执行:
@echo on
for /f "delims=" %%f in ( 'dir/b/s/a-d *.*' ) do (
    if not "%%-nxf"=="%0" ren "%%f" "%title%%%~nxf"
)
echo 程序执行成功。
pause
删除指定前缀
复制内容到剪贴板
代码:
@echo off & setlocal enabledelayedexpansion
echo 此程序会将文件夹中的所有文件指定的前缀删除。
echo 关闭窗口,或者按Ctrl + C 键可结束程序执行。
echo -----------------------
set /p title=请输入需要删除的文件前缀:

@echo on
set count=0

:loop
if not "!title:~%count%,1!" == "" (
    set /a count+=1
    goto loop
)

for /f "delims=" %%f in ( 'dir/b/s/a-d *.*' ) do (
    call set fileName=%%~nxf
    if "!fileName:~0,%count%!"=="%title%" call ren "%%f" "!fileName:~%count%!"
)
pause
任岁月荏苒 初衷不改 专注 细致 精益求精

TOP

发新话题