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

blazer-05 23-10-2019 19:43 2893265

Как правильно сделать батник?
 
Здравствуйте.
Есть батник с такой задачей
"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

megaloman 23-10-2019 20:19 2893270

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\"


blazer-05 24-10-2019 14:30 2893375

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

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

"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

megaloman 24-10-2019 16:51 2893395

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


blazer-05 24-10-2019 17:16 2893399

Похоже, что эта строка лишняя
Код:

"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -agYYYY-mm-dd_hh-mm-ss -u -rr8 -y %BoxArc%\backup-.rar "%FileIn%"
т.к. он еще повторно создает один архив.

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

megaloman 24-10-2019 17:48 2893409

Цитата:

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

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

Код:

Del "%Fftp%"

blazer-05 24-10-2019 18:10 2893415

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

megaloman 24-10-2019 18:15 2893418

Цитата:

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

blazer-05 24-10-2019 18:25 2893421

Цитата:

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

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

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

megaloman 24-10-2019 18:29 2893422

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

blazer-05 24-10-2019 18:56 2893429

megaloman, спасибо я понял.


Время: 20:35.

Время: 20:35.
© OSzone.net 2001-