繁体   English   中英

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

[英]use batch scripting and 7-zip to compress files

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

“1.txt”
“2.txt”

由于 7-zip 通过批处理文件,我需要将它们压缩为 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 

在此先感谢您的帮助

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

这是我用来获取日期值的股票脚本。 这是建立在您的本地化是美国英语的序言中; 如果不是您的情况,您可能需要更改它。

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM