如何压缩特定日期范围内的文件

如何压缩特定日期范围内的文件

我正在寻找一种使用脚本压缩特定日期范围内的文件的方法。

例如,我需要将文件压缩到指定的文件夹中,修改日期为 2020。

我尝试了这里建议的解决方案: https://stackoverflow.com/questions/14567022/using-7zip-to-archive-file-by-year

我尝试使用的 .bat 文件的完整代码:

@echo off

set 7z=C:\Program Files\7-Zip\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.

但是当我尝试运行批处理脚本时收到此错误消息:

'zdiryearyear" -mx5' 不被识别为内部或外部命令,可运行程序或批处理文件。

欢迎提出有关如何实现此目的的任何其他建议!

答案1

CMD 语法用于%n引用参数,例如echo %1 %2。因此,你应该不是使用以数字开头的变量名,例如7z。如果你打开,你可以看到问题@echo。示例来自SS64

SET 1=Hello

您可能希望创建变量 %1%,但在批处理文件中它将失败。

即使调用脚本时没有传递任何参数 %1,参数也会优先,因此 %1% 会被评估为 %1 加上末尾的额外 %。请记住,命令行仅从左到右解析一次,因此 %1 会被评估甚至读取了第二个 %。

请注意,这仅适用于 bat 文件,因为它们可以通过参数调用

相关内容