最終更新日が 30 日を超えている特定のディレクトリのすべてのファイルをアーカイブできるスクリプトを作成しています。ファイルを新しいフォルダに移動し、後でこのフォルダを圧縮する必要があります。
さらに、これは少し重要ですが、アーカイブ プロセスでは、ファイルを月ごとにグループ化する必要があります。圧縮されたフォルダーの名前は、含まれているファイルの月と年を示している必要があります。
例: 2012_12.zip (2012 年 12 月のすべてのファイルを含む) ; 2013_01.zip (2013 年 1 月以降のすべてのファイルが含まれています)
これは私がこれまでに持っているものです:
ECHO OFF
ECHO.
SET /p folder=Which folder you want to archive?
ECHO.
ECHO %folder%
CHDIR %folder%
MKDIR Archive
ROBOCOPY "%folder%" "%folder%\Arquivo" /E /V /ETA /MOVE /XD "%folder%\Archive"
:: Exclude files newer than 30 days
FORFILES /P "%folder%\Archive" /D -31/12/2012 /D +1/12/2012 /C GOTO :ZIP
CALL:ZIP
SET filetozip="%folder%\Archive"
set tempdir=C:\Users\tiago.campos\Documents\OMS\FilesArchiver\tempdir
mkdir %tempdir%
copy %filetozip% %tempdir%
mkdir "%filetozip%\Archive"
rmdir %tempdir%
realdate
echo Set objArgs = WScript.Arguments > _zipIt.vbs
echo InputFolder = objArgs(0) >> _zipIt.vbs
echo ZipFile = objArgs(1) >> _zipIt.vbs
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs
echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs
echo wScript.Sleep 2000 >> _zipIt.vbs
CScript _zipIt.vbs %tempdir% "%filetozip%\Archive\2013.01.zip"
del "_zipIt.vbs"
pause
おまけ機能として、ディレクトリを入力として与える代わりに、スクリプトが複数のディレクトリを含む csv ファイルから読み取ると非常に便利です。
私はその瞬間に少し迷っています。すべての返信に事前に感謝します!