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

问题描述 投票:0回答:2

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

“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”的文件夹,其中包含一个“.rar”,其中包含我的 2 个文件。 我想要一个包含我的 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 

提前感谢您的帮助

batch-file 7zip
2个回答
0
投票

您从

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


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
© www.soinside.com 2019 - 2024. All rights reserved.