Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Как правильно сделать батник?

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


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

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


Здравствуйте.
Есть батник с такой задачей
"D:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -agYYYY-mm-dd_hh-mm-ss -u -rr8 -y H:\1c_backup\backup-.rar H:\1C_BASES\safonova\*.*
copy H:\1c_backup\*.rar \\192.168.1.67\backup\
он архивирует базу данных 1с и ложит ее рядом в каталог 1c_backup и отправляет копию на сосднюю машину.

Сейчас все копии копируются на соседнюю машину *.rar, как сделать, чтобы только последний архив копировался?
Архив имеет такой вид backup-2019-10-23_19-36-22.rar

Отправлено: 19:43, 23-10-2019

 

Ветеран


Contributor


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

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


blazer-05, Если на сервере и на соседней машине должен быть одинаковый набор копий, то будет копироваться только отсутствующие или более свежие файлы
Код: Выделить весь код
copy xcopy /D /Y H:\1c_backup\*.rar \\192.168.1.67\backup\
Как вариант, вместо Copy, чтобы копировался только последний файл
Код: Выделить весь код
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D /O:D "H:\1c_backup\*.rar"`) DO Set "File=%%f"
	xcopy /D /Y "H:\1c_backup\%File%" "\\192.168.1.67\backup\"

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


Последний раз редактировалось megaloman, 23-10-2019 в 21:01.

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

Отправлено: 20:19, 23-10-2019 | #2



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

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


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


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

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


Все получилось, работает как нужно, спасибо огромное!

Подскажите еще пожалуйста, я сделал для другой машины аналогичный батник, который отправляет архив на фтп сервер с таким кодом.
Код: Выделить весь код
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -agYYYY-mm-dd_hh-mm-ss -u -rr8 -y D:\backup\backup-.rar D:\1C_BASES\safonova\*.*
@echo off
ftp -s:D:\ftp.txt -nd
и файл ftp.txt где указаны параметры доступа на фтп сервер
open ip севера
user blazer-05
mypassword
binary
quote PASV
send D:\backup\backup-2019-10-23_16-03-15.rar
quit

все работает нормально, но как сюда передать этот последний созданный архив, чтобы на фтп тоже отправлялся этот же последний созданный архив?
сейчас отправляется только если явно указать ему имя файла backup-2019-10-23_16-03-15.rar

Отправлено: 14:30, 24-10-2019 | #3


Ветеран


Contributor


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

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


blazer-05, Не проверял досконально:
Код: Выделить весь код
@Echo Off
	Set "BoxArc=D:\backup"
	Set "Mask=backup-20*.rar"
	Set "FileIn=D:\1C_BASES\safonova\*.*"

	Set "Fftp=D:\ftp.txt"

	"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -agYYYY-mm-dd_hh-mm-ss -u -rr8 -y %BoxArc%\backup-.rar "%FileIn%"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D /O:D "%BoxArc%\%Mask%"`) DO Set "File=%BoxArc%\%%f"
	>%Fftp% (
		Echo open ip севера
		Echo user blazer-05
		Echo mypassword
		Echo binary
		Echo quote PASV
		Echo send %File%
 		Echo quit
	)
	ftp -s:%Fftp% -nd
Exit /B 0

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


Отправлено: 16:51, 24-10-2019 | #4


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


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

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


Похоже, что эта строка лишняя
Код: Выделить весь код
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -agYYYY-mm-dd_hh-mm-ss -u -rr8 -y %BoxArc%\backup-.rar "%FileIn%"
т.к. он еще повторно создает один архив.

Я правильно понимаю, что теперь файл ftp.txt не нужен т.к. все настройки фтп сервера в одном батнике?

Отправлено: 17:16, 24-10-2019 | #5


Ветеран


Contributor


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

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


Цитата:
Похоже, что эта строка лишняя
нет. Он вместо Вашей старой строки. Отличие- пути файлов задаются переменными. Если захотите перенести батник на другую машину или настроить для других путей - измените их в начале батника, а не в строке с архиватором.
Цитата:
Я правильно понимаю, что теперь файл ftp.txt не нужен
не совсем. Этот файл делает батник каждый раз при работе, а потом на него он же ссылается. Руками этот файл делать не надо, батник его всё равно перепишет. Надо в батнике его правильно написать (пароли, явки и т д). %File% - не трогать, это имя последнего файла.
После работы батника можете его ручками открыть и посмотреть, что там внутри.
Кстати, его можно, в принципе, в батнике же и убить после отработки ftp.

Код: Выделить весь код
Del "%Fftp%"

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


Последний раз редактировалось megaloman, 24-10-2019 в 18:21.


Отправлено: 17:48, 24-10-2019 | #6


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


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

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


насчет фтп понятно.
По поводу той строки, тогда почему он делает два архива т.е. подряд сразу два. Когда ее закомментировал, то все нормально отрабатывает один раз.

Отправлено: 18:10, 24-10-2019 | #7


Ветеран


Contributor


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

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


Цитата:
почему он делает два архива т.е. подряд сразу два
Вы неправильно интерпретируете ситуацию:
Ваша строка делает один архив с одним именем, моя строка делает другой с другим именем - в именах архива Вы задействовали секунды, соответственно, и архивы различаются по времени в именах. Надо оставить одну строку с архивированием, имхо, лучше мою, дважды делать архив с разницей в малое время не стОит.

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


Отправлено: 18:15, 24-10-2019 | #8


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


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

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


Цитата megaloman:
Вы неправильно интерпретируете ситуацию:
Ваша строка делает один архив с одним именем, моя строка делает другой с другим именем - в именах архива Вы задействовали секунды, соответственно, и архивы различаются по времени в именах »
в принципе я понял. Сначала делается архив из моей строки, потом из вашей, где переменными изменяется время и потом этот архив уходит уже на соседний комп по сети и на внешний фтп.
Но все же, когда я закоментировал вашу строку данный скрипт работал нормально в каждом архиве имя его было разным т.е. время отличалось и так же все отправлялось во всех направлениях.

Спасибо вам огромное за помощь!

Отправлено: 18:25, 24-10-2019 | #9


Ветеран


Contributor


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

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


blazer-05, если Вы сегодня запустите сто раз батник, сто раз создадутся архивыс разным временем в имени, сто раз отправятся на фтп, и не важно, чья строка с архиаатором останется - всегда будет отправляться последний сделанный файл.
Если в одном батнике два раза последовательно делается архив, отправится последний по времени.

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


Отправлено: 18:29, 24-10-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Как сделать батник для сброса RDP сессий paull2006 Скриптовые языки администрирования Windows 12 31-07-2019 22:26
Как правильно сделать в помещениии освещение как в ясный полдень? Yewgeniy Хочу все знать 45 13-09-2016 15:45
[решено] Как сделать,что б батник проверял число ? mitiya Автоматическая установка Windows 2000/XP/2003 27 28-01-2010 08:15
CMD/BAT - [решено] Батник меняющий имя файла(как правильно переименовать)? ofcoss Скриптовые языки администрирования Windows 1 07-09-2009 12:53
Как правильно сделать загрузчик? James Marsh Общий по Linux 9 17-05-2005 13:50




 
Переход