使用批处理脚本和7-zip压缩文件

时间:2014-12-04 15:21:32

标签: batch-file 7zip

我有一个由文件组成的文件夹:

“1.txt的”
“2.txt”

由于7-zip通过批处理文件,我需要压缩它们。 这个脚本一切都运行良好:

7za a my_zip.rar 1.txt 2.txt 

我得到一个包含这两个文件的my_zip.rar。

问题是我需要将zip文件命名为批处理文件执行时的日期。所以我尝试了这个脚本:

set year=%date:~10,4%
set month=%date:~4,2%

7za a %year%_%month%.rar 1.txt 2.txt 

我收到一个名为“_2”的文件夹,其中包含包含我的2个文件的“.rar”。 我想要一个包含我的2个文件的“2014_12.rar”文件。

编辑:脚本输出:

D:\Users>zip.bat
D:\Users>set year=
D:\Users>set month=2/
D:\Users>echo _2/.rar 1.txt 2.txt
 _2/.rar 1.txt 2.txt
D:\Users>7za a _2/.rar 1.txt 2.txt
7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning
Updating archive _2/.rar
Compressing  1.txt
Compressing  2.txt
Everything is Ok

我使用的zip.bat:

set year=%date:~10,4%
set month=%date:~4,2%
echo %year%_%month%.rar 1.txt 2.txt
7za a %year%_%month%.rar 1.txt 2.txt 

提前感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您正在从DATE错误地剪切年份和月份部分。由于我不知道如何在您的语言环境中格式化日期,我可以在命令行上建议您echo %DATE%并正确计算字符,记住您必须以0开头。(如果您有dd / mm / yyyy,即6,4和3,2)

答案 1 :(得分:0)

这是我用来获取日期值的股票脚本。这是根据您的本地化是美国英语的前言构建的;如果不是你的情况,你可能需要改变它。

@echo off

setlocal EnableDelayedExpansion
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
    if "%%B" NEQ "" (
        SET /A FDATE=%%F*10000+%%D*100+%%A
        SET /A FTIME=%%B*10000+%%C*100+%%E
    )
)

SET DatePartYear=%FDATE:~0,4%
SET DatePartMonth=%FDATE:~4,2%
SET DatePartDay=%FDATE:~6,2%

C:
cd\
cd "Program Files\7-Zip"
7z.exe a D:\%DatePartYear%_%DatePartMonth%.rar D:\1.txt D:\2.txt
pause