Компьютерный форум 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=349194)

Dozentz 13-07-2021 13:08 2962056

Резервное копирование файла
 
Имеется скрипт копирования целой папки c созданием текущей даты для копирования
Код:

@Echo Off
SetLocal EnableDelayedExpansion
:: ЧТО и КУДА копируем, сколько храним
:: $OLD - КОЛИЧЕСТВО хранимых архивов
Set $SRC=D:\Kadry\data
Set $DST=F:\Backup\oks
Set $OLD=6
:: Находим текущие день/месяц/год
For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set $Time=%%i
Set $Y=%$Time:~0,4%&Set $M=0%$Time:~4,2%&Set $D=0%$Time:~6,2%
Set $M=%$M:~-2%&Set $D=%$D:~-2%
:: Создаем каталог/делаем архив
XCopy /S/E/D/C/Q %$SRC%\* %$DST%\%$D%.%$M%.%$Y:~-2%\
:: Ограничиваем количество архивов
For /F "Delims=" %%i In ('DIR /B/O:-D/A:D %$DST%\??.??.??') Do (
  Set /A $OLD-=1
  If !$OLD! LSS 0 RD /S/Q "%$DST%\%%i"
)

подскажите как копировать не целую папку а только один файл из неё например 1.txt, а также архивация папки с датой

Elven 13-07-2021 17:13 2962073

Это не ответ, это просто решение на powershell. Никаких претензий к cmd, просто мне скучно, а винды под рукой нет...
Код:

$SRC = "D:\Kadry\data"
$DST = "F:\Backup\oks"
$OLD = 6
$filename = "file.name"
$archive_name= (get-date -Format yy.MM.dd)
(Get-ChildItem -Path $SRC $file).FullName | Compress-Archive -DestinationPath $DST$archive_name.zip
while ((Get-ChildItem -Path $DST ??.??.??.zip).Length -gt 6) {
  (Get-ChildItem -Path $DST ??.??.??.zip | Sort-Object -Property LastWriteTime -Top 1).Delete()
}

Если имя не указано, то заархивируется все содержимое папки.

megaloman 13-07-2021 17:37 2962075

Цитата:

Цитата Dozentz
как копировать не целую папку а только один файл из неё например 1.txt »

Код:

XCopy /S/E/D/C/Q %$SRC%\1.txt %$DST%\%$D%.%$M%.%$Y:~-2%\
Не тестировал.
Слегка упростил код:
Код:

@Echo Off
cls
        rem Set "$SRC=D:\Kadry\data\*"
        Set "$SRC=D:\Kadry\data\1.txt"
        Set "$DST=F:\Backup\oks"
        Set /A $OLD=6

        FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "$ToDay=%%d" &Call Set "$ToDay=%%$ToDay:~6,2%%.%%$ToDay:~4,2%%.%%$ToDay:~2,2%%"

        XCopy /S/E/D/C/Q "%$SRC%" "%$DST%\%$ToDay%\"

        FOR /F "usebackq Skip=%$OLD% delims=" %%d IN (`2^>nul Dir "%$DST%\??.??.??" /B /O:-D /A:D`) DO Rd /S /Q "%%d"
Pause
Exit /B



Время: 14:42.

Время: 14:42.
© OSzone.net 2001-