Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как заархивировать файлы с датой создания этих файлов? (http://forum.oszone.net/showthread.php?t=267243)

yaoleg2 31-08-2013 23:57 2210841

Как заархивировать файлы с датой создания этих файлов?
 
Есть несколько файлов для архивации архиватором 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 2210876

Цитата:

Цитата yaoleg2
Нужно чтобы в названии создаваемого архива, была дата создания этих файлов. »

Если даты создания у файлов разные?

Цитата:

Цитата yaoleg2
Вот как я узнаю дату создания файлов: »

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

Код:

@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».


Время: 02:45.

Время: 02:45.
© OSzone.net 2001-