2014-12-04 112 views
0

我有一個文件夾文件組成:使用批處理腳本和7-ZIP壓縮文件

「的1.txt」
「2.txt」

我需要壓縮的ZIP感謝通過批處理文件到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」包含「.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 

在此先感謝您的幫助

+0

作品對我很好,也許嘗試使用' 「'在RAR文件名:'」 %年%_%,當月%.rar程序「' – Elisha 2014-12-04 15:34:16

+0

(我用'7z.exe') – Elisha 2014-12-04 15:35:36

+0

好,因爲有了這個EXE文件(7za),添加雙引號就沒有什麼改變。謝謝無論如何 – user2443476 2014-12-04 15:37:01

回答

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 
+0

'wmic'的好處是,輸出與區域設置無關。 (請參閱[這裏](https:// stackoverflow。com/a/18024049/2152082)更簡單的'wmic'查詢得到相同的結果) – Stephan 2017-12-23 13:40:30

+0

@Stephan我不知道這一點。太好了,謝謝! – UnhandledExcepSean 2017-12-23 13:59:06

相關問題