如何压缩文件名中包含今天日期的文件夹?

时间:2019-01-17 11:52:52

标签: windows batch-file vbscript zip

我有一个批处理文件和一个vbs文件,用于压缩具有特定目录名称的文件夹并将其复制到另一个文件夹。

如何仅压缩包含今天日期的文件夹? 如果不可能,如何只压缩具有今天日期作为“修改日期”列的文件夹?

蝙蝠:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
for /f %%i in ('dir /b /a-d "%mypath%"') do set "last=%%~ni"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

vbs:

'Get command-line arguments.
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)

'Create empty ZIP file.
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile,         
True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)

Set objShell = CreateObject("Shell.Application")

Set source = objShell.NameSpace(InputFolder).Items

objShell.NameSpace(ZipFile).CopyHere(source)

'Required!
wScript.Sleep 2000

例如,以下文件比今天更旧,因此不应压缩。

set "mypath=C:\TEMP\zip\source\JEAR_20190115"

如果等于今天,则脚本应运行:

set "mypath=C:\TEMP\zip\source\JEAR_20190117"

上一个问题:https://stackoverflow.com/a/54216776/7420833

1 个答案:

答案 0 :(得分:2)

其余的解释与前面的问题相同,但是我们只添加了一些vbs代码即可以所需的格式获取正确的日期。

@echo off
echo >"%temp%\%~n0.vbs" s=DateAdd("d",0,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
if exist "C:\TEMP\zip\source\JEAR_%result%" (
    set "mypath=C:\TEMP\zip\source\JEAR_%result%"
 )  else (
    exit
 )
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

使用原因