Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat - сравнение названия папки с текущей датой

Ответить
Настройки темы
CMD/BAT - bat - сравнение названия папки с текущей датой

Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: MisterCron
Дата: 28-01-2021
Добрый день! Имеется bat файл который запускается несколько раз в день. Скрипт копирует все файлы находящиеся в папке new в папку backup с текущей датой. При обнаружении в папке backup папку с текущей датой он ее удаляет, создает новую и копирует туда файлы из папки new. Суть в том что нужно сделать условие - чтобы при обнаружении папки с текущей удаление и копирование не происходило. Большое спасибо за помощь.


Код: Выделить весь код
@echo off

md backup

set _my_datetime=%date%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=.%
set _my_datetime=%_my_datetime:,=.%

RD /S /Q "backup\%_my_datetime%"

xcopy new backup\%_my_datetime%\ /H /Y /C /R /S

Отправлено: 12:34, 28-01-2021

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo on
@for /f "tokens=1* delims==" %%a in ('"wmic path win32_localtime get Day,Month,Year,Hour,Minute,Second /value|find "^=""') do @set "%%a=0%%b"
:: if exist "%Year:~-5%.%Month:~-3%.%Day:~-3%-%Hour:~-3%'%Minute:~-3%'%Second:~-3%" echo Не удаляем, не копируем
if "Name_Dir"=="%Year:~-5%.%Month:~-3%.%Day:~-3%-%Hour:~-3%'%Minute:~-3%'%Second:~-3%" echo Не удаляем, не копируем
pause
запустите, посмотрите какой формат в коде и подгоните под свой формат в имени папки
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:37, 28-01-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


Как попросили (формат имени папки взял из Вашего примера):
Код: Выделить весь код
@Echo Off
cls
	Set "From=New"
	Set "To=backup"
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO Set "Now=%%d"
	
	Set "Backup=%To%\%Now:~6,2%.%Now:~4,2%.%Now:~0,4%"
	If Not Exist  "%Backup%\" Xcopy "%From%\*.*" "%Backup%\" /H /Y /C /R /S /D
rem	Xcopy "%From%\*.*" "%Backup%\" /H /Y /C /R /S /D
Pause
Exit /B
MisterCron, по моему скромному мнению, у Вас неверная постановка: считаю, что если папка есть, то надо туда скопировать только изменённые файлы, а вот удалять папку и всё копировать заново, или ничего не делать, если она уже есть - плохой путь.
Если Вы сочтете это приемлемым, то уберите If Not Exist "%Backup%\" и обязательно добавьте в Xcopy /D, как это сделано в закомментированной строке

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-01-2021 в 15:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 28-01-2021 | #3


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата megaloman:
у Вас неверная постановка »
Большое спасибо за Ваш ответ. Задача состоит в том чтобы сделать бекап один раз в день. Если бекап сделать не делать. И дату сравнивать исходя из _my_datetime. Каждый день будет создаваться 1 бэкап

Последний раз редактировалось MisterCron, 28-01-2021 в 19:00.


Отправлено: 18:54, 28-01-2021 | #4


Новый участник


Сообщения: 5
Благодарности: 1

Профиль | Отправить PM | Цитировать


Пришел к такому коду
Код: Выделить весь код
if not exist "backup\%_my_datetime%" (
    xcopy "new" "backup\%_my_datetime%\" /H /Y /C /R /S
) else (
echo #**The backup has already been created today**#
)

Отправлено: 22:00, 28-01-2021 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat - сравнение названия папки с текущей датой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - создание папки с текущей датой, помогите подправить для текстового файла balzaman Скриптовые языки администрирования Windows 7 02-10-2019 03:14
CMD/BAT - [решено] Поиск самой старой папки и вывод разницы между датой её создания и текущей wlad1164 Скриптовые языки администрирования Windows 7 09-05-2018 21:01
CMD/BAT - [решено] батник для создания папки с текущей датой + время aggressor_ Скриптовые языки администрирования Windows 23 08-02-2018 16:02
CMD/BAT - архивирование файла с текущей датой mcintosh55 Скриптовые языки администрирования Windows 1 22-12-2014 20:09
CMD/BAT - Сранение даты из файла с текущей датой InVariable Скриптовые языки администрирования Windows 0 07-02-2012 11:53




 
Переход