2016-09-14 5 views
-1

サブフォルダ内のフォルダの下にファイルを圧縮し、そのファイルをバッチスクリプトを使用してファイル名を変更して元のファイルを削除する方法を教えてください。アーカイブする日数を設定可能にする必要があります。たとえば、7日以上経過したファイルをアーカイブしたい場合は、7日以上経過したファイルを解凍する必要があります。また、削除ファイルを設定することもできます。例えば作成日時のzipファイル

は、ファイルはabc.log 2016年9月14日に作成され、それがZIPなると、私はフォーラムを検索したが見つからなかった

abc.20160914.zipとして名前を変更します。あなたの助けを本当に感謝します。

+0

こんにちはディエンバイオのための答えはあなたがしようとしたかを見てきたバッチコードの一部を投稿することができますしてください見つけます。 – Jonas

+0

Winrar、7zipなどを使用していますか? – Jonas

+0

http://stackoverflow.com/questions/30079757/rename-file-with-creation-date-time-in-windows-batch – Jonas

答えて

0

私はこの

@echo off 
setlocal enabledelayedexpansion 
set Archive=D:\scripts\test\Archive 
set Temp=D:\scripts\test\Temp 
set DaytoDelete=7 

REM Moving file older than %DaytoDelete% days to TEMP folder 
for /f "tokens=*" %%G in (D:\scripts\test\Location.txt) do (
forfiles -p "%%G" -s -m *.log -d -%DaytoDelete% -c "cmd /c move @path %TEMP%" 
) 
if not exist "%Archive%" (md "%Archive%") 
if not exist "%Temp%" (md "%Temp%") 

REM Zip file in %Temp% and rename zip file with creation date 
for %%a in ("%Temp%\*.log") do (
    echo Processing %%~nxa ... 
    set File=%%~fa 
    set Archive=D:\scripts\test\Archive 

    for /f "tokens=1* delims=," %%a in ('wmic datafile where "name='!File:\=\\!'" get 'CreationDate' /format:csv ^| find /i "%ComputerName%"') do (set CreationDate=%%b) 
    echo %%~nxa: !CreationDate! 
    set cYear=!CreationDate:~0,4! 
    set cMonth=!CreationDate:~4,2! 
    set cDay=!CreationDate:~6,2! 
    set FileTime=!cYear!!cMonth!!cDay! 

    REM zip "%Archive%\temp.zip" %%~fa Issue with zip command, it zips whole full path of file 
    "C:\Program Files\7-Zip\7z.exe" a -tzip "%Archive%\temp.zip" %%~fa 
    ren %Archive%\temp.zip %%~na.!FileTime!.zip 
) 

REM Delete file after zipping 
DEL /F /S /Q %Temp%\*.* 
pause 
関連する問題