Войти

Показать полную графическую версию : [решено] Как заархивировать файлы с датой создания этих файлов?


yaoleg2
31-08-2013, 23:57
Есть несколько файлов для архивации архиватором 7-zip.

Нужно чтобы в названии создаваемого архива, была дата создания этих файлов. 7za a -t7z backup-%date%.7z -mx9 @filelist.txt -scsWIN -ssw
Вот как я узнаю дату создания файлов: for %%i in ("1.doc") do echo %%~ti>date.txt

Каким образом из файла date.txt взять текст "09.08.2012" и добавить в название создаваемого архива backup-ДАТА.7z, где ДАТА - 09.08.2012?

Iska
01-09-2013, 03:09
Нужно чтобы в названии создаваемого архива, была дата создания этих файлов. »
Если даты создания у файлов разные?

Вот как я узнаю дату создания файлов: »
Вы некорректно узнаёте дату создания файлов. Во-первых, не «файлов», а «файла». Во-вторых, таким вот образом Вы узнаёте дату последней модификации файла, а отнюдь не дату его создания.

@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=1.doc

if exist "%sFile%" (
for /f "usebackq" %%i in (`2^>nul dir /t:c "%sFile%" ^| find.exe /i "%sFile%"`) do set sDate=%%~i

if defined sDate (
"%ProgramFiles%\7-ZipA\7za.exe" a -t7z -mx9 -i@"filelist.txt" -scsWIN -ssw "backup-!sDate!.7z"
) else (
echo Can't determine Date created for file [%sFile%].
)
) else (
echo Can't find file [%sFile%].
)

endlocal
exit /b 0


Я бы вообще использовал такое:
@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=1.doc

for %%i in ("%sFile%") do set sFullFileName=%%~fi

if exist "%sFullFileName%" (
for /f "usebackq" %%i in (`2^>nul wmic.exe DataFile WHERE "Name='%sFullFileName:\=\\%'" get CreationDate /value ^| find.exe /i "CreationDate"`) do set s%%i

if defined sCreationDate (
"%ProgramFiles%\7-ZipA\7za.exe" a -t7z -mx9 -i@"filelist.txt" -scsWIN -ssw "backup-!sCreationDate:~0,8!.7z"
) else (
echo Can't determine Date created for file [%sFullFileName%].
)
) else (
echo Can't find file [%sFullFileName%].
)

endlocal
exit /b 0

— в отсортированном по именам списке по формату «YYYYMMDD» удобнее ориентироваться нежели в разбросанном там и сям списке по формату «DD.MM.YYYY».




© OSzone.net 2001-2012