Войти

Показать полную графическую версию : [решено] Скрипт для удаления последнего скопированный файл


AZABAZA
08-01-2015, 05:45
День добрый, Привет Всем,
Я тут первый раз у вас.
У меня вопрос следующий:
Я не силен в написаний скрипта, но нужно написать скрипт для удаления последний скопированный файл.
Пример: на сервере 1 есть файлы с расширением .ARC (примерно штук 30) их нужно копировать каждый 15 минут на сервер 2. Но последний скопированный файл (30-ый) нужно удалить с сервера 2. А через 15 минут на сервере прирастает файлы (30+15) эти файлы нужно копировать, предварительно проверяя на наличие на сервере 2.
Кто в чем силен, можете протянуть руку помощи?!

Iska
08-01-2015, 05:56
(примерно штук 30) »
(30-ый) »
Определитесь с количеством.

Но последний скопированный файл (30-ый) нужно удалить с сервера 2. »

Зачем удалять, если можно просто не копировать?
По какому принципу выстраивается очерёдность файлов?

А через 15 минут на сервере прирастает файлы (30+15) эти файлы нужно копировать, предварительно проверяя на наличие на сервере 2. »
Аналогичные вопросы:

По какому принципу выстраивается очерёдность файлов?
Определитесь с количеством.


P.S. Задача изложена очень сумбурно.

AZABAZA
08-01-2015, 06:03
//не знаю как именно написать для Iska

Определитесь с количеством. »

Это лог файлы Базы Данных. они создаются когда пройсходят транзакций и.т.д.

Зачем удалять, если можно просто не копировать? »

Хотя можно и не копировать, классная идея!

По какому принципу выстраивается очерёдность файлов? »

Имена файлов следующим образом создаются:
ML_0000040534_0001_0845237174.ARC
ML_0000040535_0001_0845237174.ARC
ML_0000040536_0001_0845237174.ARC

Iska
08-01-2015, 06:59
Куда затем деваются файлы «*.arc» с сервера 1 и сервера 2? Ведь их число не может расти бесконечно, полагаю.

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0418\Source
set sDestFolder=E:\Песочница\0418\Destination

set bFound=

if exist "%sSourceFolder%\." (
if exist "%sDestFolder%\." (
pushd "%sSourceFolder%"

for /f "usebackq delims=" %%i in (
`2^>nul dir /b /o:-n "*.arc"`
) do if defined bFound (
if not exist "%sDestFolder%\%%~i" (
>nul copy "%sSourceFolder%\%%~i" "%sDestFolder%\%%~i"
)
) else (
set bFound=True
)

popd
) else (
echo Can't find destination folder [%sDestFolder%].
exit /b 2
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)

endlocal
exit /b 0

AZABAZA
08-01-2015, 07:16
Куда затем деваются файлы «*.arc» с сервера 1 и сервера 2? Ведь их число не может расти бесконечно, полагаю. »

Да верно подмечено, эти файлы нужны для восстановления на момент времени.
Они на сервере 1 удаляются ежедневно, а на сервере 2 пока никак не удаляются.

((Можно и в скрипт прописать. Если больше 1-го дня удалять) то есть 8 числа удалить за 7 число))

Iska
08-01-2015, 07:33
Они на сервере 1 удаляются ежедневно, а на сервере 2 пока никак не удаляются. »
Что ж, тогда вышеприведённый код должен работать.

AZABAZA
08-01-2015, 07:38
Что ж, тогда вышеприведённый код должен работать. »

Он хорошо отработал, только вот старые он не удалил на сервре 2

Iska
08-01-2015, 08:12
только вот старые он не удалил на сервре 2 »
И не должен был. Об этом речи не велось.

AZABAZA
08-01-2015, 08:26
И не должен был. Об этом речи не велось. »

Все верно,
А можно ли это сделать? и куда нужно прописать delete )?
Да он не копирует последний файл. Круто, спасибо!

Iska
08-01-2015, 08:47
А можно ли это сделать? и куда нужно прописать delete )? »
Опишите подробно что именно, когда именно и откуда именно потребно удалять.

AZABAZA
08-01-2015, 08:56
Опишите подробно что именно, когда именно и откуда именно потребно удалять. »

Нужно удалять файлы старше 1-го дня (24 часа), с сервера 2.

Iska
08-01-2015, 08:57
старше 1-го дня »
Ориентируемся по дате создания или по дате последней модификации?

AZABAZA
08-01-2015, 09:07
Ориентируемся по дате создания или по дате последней модификации? »

По дате последней модификации исходя от текущей даты.

AZABAZA
08-01-2015, 11:05
Iska,
По дате последней модификации исходя от текущей даты. »

Можно такое сделать?

AZABAZA
08-01-2015, 11:52
Iska,

Где можно использовать, этот скрипт который вы написали -c"%comspec% /c echo @PATH\@FILE" в моем скрипте.

http://forum.oszone.net/thread-203988.html <тут я не понял как указать путь до файлов.

Iska
08-01-2015, 11:59
Где можно использовать, »
Отдельным пакетным файлом, расположенном и исполняемом на сервере 2 с потребной периодичностью.

тут я не понял как указать путь до файлов. »
forfiles - Поиск в Google (https://www.google.com/search?q=forfiles&ie=utf-8&oe=utf-8).

AZABAZA
12-03-2015, 11:31
Iska,

День добрый, ISKA

Вопрос по дополнению к скрипту. Можно не копировать файлы больше 2-х дней? (в скрипте что где поменять?) а то туда сюда катать не кайф =)

Заранее благодарен!

AZABAZA
12-03-2015, 12:44
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=E:\Песочница\0418\Source
set sDestFolder=E:\Песочница\0418\Destination
set bFound=
if exist "%sSourceFolder%\." (
if exist "%sDestFolder%\." (
pushd "%sSourceFolder%"
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /o:-n "*.arc"`
) do if defined bFound (
if not exist "%sDestFolder%\%%~i" (
>nul copy "%sSourceFolder%\%%~i" "%sDestFolder%\%%~i"
)
) else (
set bFound=True
)
popd
) else (
echo Can't find destination folder [%sDestFolder%].
exit /b 2
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)
endlocal
exit /b 0 »

я пробовал менять код, ни к чему оно меня не привело =(




© OSzone.net 2001-2012