Top.Mail.Ru
Ответы

Помогите с написанием .bat

Подобие резервного копирования.

Есть папка save, откуда копируем. создаю копию раз в 15 минут. Файлы копируются все, но не все изменяются. Пришла идея создать папку temp, куда, например, в ручную 1 раз скопировать файлы. После чего запустить батник, сначала он проверяет на соответствие в этой папке, если равны, ничего не делать, если нет, перезаписать тут, а также закинуть в создаваемую раз в 15 папку.

При этом в именах папок присутствуют как пробелы, так и русские буквы, для этого ставлю кодировку 866.

В батниках не понимаю совсен ничего, и если это сделать очень просто, не серчайте, собирал из ответов в интернете (прям Франкенштейн получился). Но с последней идеей (без копий) не вышло. Пробовал FC \b! newfile! !oldfile!, но он не воспринимает пробелы, убирать их не вариант.

Вот что есть:

SetLocal EnableDelayedExpansion
@echo off
:loop
FOR /L %%a IN (1,1,10) DO (

set h=!TIME:~0,2!
set m=!TIME:~3,2!

set "dir=O:\!date! !h!.!m!"
mkdir "!dir!"

echo! time!
copy "D:\save\Hero00.pax" "!dir!"
copy "D:\save\Hero01.pax" "!dir!"
copy "D:\save\Hero02.pax" "!dir!"
copy "D:\save\Hero03.pax" "!dir!"
copy "D:\save\Hero04.pax" "!dir!"
copy "D:\save\Hero05.pax" "!dir!"
copy "D:\save\Hero06.pax" "!dir!"
copy "D:\save\Hero07.pax" "!dir!"

timeout /t "900"
)
goto loop

Дополнен

Решение:

SetLocal EnableDelayedExpansion
@echo off
:loop
set h=!TIME:~0,2!
set m=!TIME:~3,2!

set "dir=O:\!date! !h!.!m!"
set "temp=O:\temp"
mkdir "!temp!"

FOR /L %%a IN (0,1,7) DO (
set "NewFile=.\save\Hero0%%a.pax"
set "OldFile=O:\temp\Hero0%%a.pax"

fc! NewFile! !OldFile! > null
if! ERRORLEVEL! == 1 (
echo "not compare"
mkdir "!dir!"
copy "D:\save\Hero0%%a.pax" "!dir!"
copy "D:\save\Hero0%%a.pax" "!temp!"
)
echo "hero 0%%a"
)
timeout /t "900"

goto loop

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

с помощью планировщика раз в 15 минут запускать батник из одной строчки
xcopy/u D:\save\*.pax D:\temp\