使用 7zip 按年份存档文件



我有一个运行 7zip 的批处理脚本,允许我将所有文件压缩到一个文件夹中。我只想压缩修改日期为 2010 年或我选择的其他日期的文件。我想在将文件存档到 zip 文件夹后删除这些文件。这是我的逻辑。查找 2012 年的文件,并将这些文件存档到名为 2012 的文件夹中。压缩文件夹并删除文件。0

这就是我目前所拥有的。

@ECHO OFF
REM This sets name of the zip file
Set choice=
set /p choice=What is the year of the files?
PAUSE
REM This sets the path of the file
Set path=
set /p path=What is the path of the files on C:'path'?
REM Use 7Zip to Zip files in folder c:path and place the zip archive in C:path
ECHO.
ECHO Zipping all files in C:%path% and moving archive to c:%path%
ECHO.
PAUSE
C:7z a -tzip "C:%path%%choice%.zip" "C:%path%*.*" -mx5
ECHO.
PAUSE
ECHO Would you like to Delete the files in orginal folder?
DEL "C:%path%*.*"
PAUSE
ECHO File is now zipped

看起来很简单。 顺便说一句,我不熟悉7zip的命令行开关。 我理所当然地认为你已经拥有了 7z 的语法.exe它需要的方式。

@echo off
set 7z=C:7z.exe
if not exist %7z% set /p 7z="Path to 7-zip executable? "
set /p year="What year do you wish to archive? "
set /p dir="What is the path of the files you wish to archive? "
mkdir "%year%"
rem output of dir is date time am/pm size filename
rem filename = 5th + additional tokens
for /f "tokens=5*" %%I in ('dir "%dir%" ^| find "/%year%"') do move "%dir%%%I %%J" "%year%"
%7z% a -tzip "%dir%%year%.zip" "%year%" -mx5
set /p I="I'm about to delete the %year% folder.  Hit Ctrl-C if this is a bad idea, or hit Enter to continue."
rmdir /q /s "%year%"
echo Done.  w00p.

我认为你缺少的是for循环。 正如我所写的那样,它执行目录列表,在用户输入时忽略与年份不匹配的任何内容,然后将令牌 5* 移动到 %year% 目录进行压缩。

相关内容

  • 没有找到相关文章

最新更新