CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение NiOl »

Вот:



Код:

Код: Выделить всё

@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set Dst=C:\TEMP\
for /f "tokens=* delims=" %%F in ('dir /a-d /b /o-d') do if "!N!"=="5" (
move /Y %%F %Dst%
Echo Moving %%F ^(!D!^) Err=!ErrorLevel! >>Last5.log
) else (
set D=%%~tF
set D=!D:~0,10!
if not "!D!"=="!P!" (
set P=!D!
set /a N+=1
)
echo Skiping %%F ^(!D!, wait=!N!^)>>Last5.log
)
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

Как я понимаю, скрипт должен лежать в той папке где и перемещаемые файлы???? если в другой папке то скрипт не выполнится???? По шедуллеру можно этот скрипт выполнять?
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

Как я понимаю, скрипт должен лежать в той папке где и перемещаемые файлы???? если в другой папке то скрипт не выполнится???? По шедуллеру можно этот скрипт выполнять?
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

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

А вот запускать этот скрипт надо именно в папке-источнике, например лежит в D:\SOFT\Scripts\, а запускается (например поле "start in" в ярлыке) в E:\DB\1C\BackUp\, при этом отличие лог-файлов %~dpn0.log от %~n0.log будет в том, что в певом случае лог-файл ведется там, где расположен сам скрипт (D:\SOFT\Scripts\), а во втором случае - там, из какой папки запущен (E:\DB\1C\BackUp\).

Подобные скрипты обычно по шедулеру и запускаются.
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

NiOl, ты все очень подробно расписал, спасибо! Я только не пойму, как можно в шедулере запустить скрипт который лежит в C:\scripts\ что бы он запускался в D:\Obmen1C\ !! Не могу это сделать, подскажите как? Очень нужно!)
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

Думаю, что Вы уже создали "задание" для шедула. Теперь редактируем его (правая кнопка мыши - свойства)



В первой вкладке все основное, что нам нать:

1. Run: (строка запуска) = C:\scripts\script.bat

2. Start in: (запускать в каталоге) = D:\Obmen1C\

3. Comments (примечания) - на свое усмотрение, вообще полезно подписывать, какое задание для чего, например "пятничная чиска бэкапов 1С"

4. Run as (запускать от имени) = учетная запись, имеющая право логиниться на этот сервер и вносить необходимые изменения (удалять файлы в папке "D:\Obmen1C\") и рядом кнопка для указания пароля этой учетки.

5. Enabled (разрешено) - если галочка стоит, то задание будет исполняться.



На второй вкладке указывается периодичность вызова задания. В списке явно нехватает пунктов "каждые nn часов" и "каждые nn минут" Изображение



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



На четвертой - указаны права на само задание шедула, скажим та - на запуск задания и на редактирование задания.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение Iska »

Всем спасибо за ответы!

NiOl, А как бы доработать приведенный в топике скрипт, учитывая то что расчет даты правильный, и необходимо только переместить файлы старше 5 дней (переменная OLD) в другую папку. Как я понимаю тут не праильно работает во эта команда, может все таки попробуем его доработать)))!!!
Цитата zavoruev:



For /F "Tokens=1-3 Delims=." %%i In ('DIR /B/A:D %$SRC%\??.??.????') Do If %%k%%j%%i LEQ %$Y%%$M%%$D% move /Y "%$SRC%\%%i.%%j.%%k %$DST%\"
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку




Буду очень признателен за оказанную помощь!
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

Цитата zavoruev:



Всем спасибо за ответы!

NiOl, А как бы доработать приведенный в топике скрипт, учитывая то что расчет даты правильный, и необходимо только переместить файлы старше 5 дней (переменная OLD) в другую папку. Как я понимаю тут не праильно работает во эта команда, может все таки попробуем его доработать)))!!!

Цитата zavoruev:

For /F "Tokens=1-3 Delims=." %%i In ('DIR /B/A:D %$SRC%\??.??.????') Do If %%k%%j%%i LEQ %$Y%%$M%%$D% move /Y "%$SRC%\%%i.%%j.%%k %$DST%\" »

Буду очень признателен за оказанную помощь!
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку




Логгер: на форуме молчание 15 минут... Изображение



наскоро просмотрев исходный скрипт, уделив особое вниманеи указанное строке, у меня вышло 1 предупреждение и 4 ошибки:



1. Процедура GetOldDate выходит по команде GoTo :EOF и я не уверен, насколько это допустимо. Обычно принято завершать процедуры командой Exit /b

(Рекомендую на всякий пожарный заменить последню строку скрипта)



2. Команда DIR в таком виде даст только названия каталогов, а не файлов.

3. Комада IF без ключа /i не воспринимает сравнение числовых величин.

4. В Команде Move указан только Источник, а Приемник не указан (пропущена пара кавычек).

5. У переносимых файлов нет расширения? (сомневаюсь)

В итоге строка переноса должна выглядить так: For /F "Tokens=1-3 Delims=." %%i In ('DIR /B /A %$SRC%\??.??.????.*') Do If /i %%k%%j%%i LEQ %$Y%%$M%%$D% move /Y "%$SRC%\%%i.%%j.%%k.*" "%$DST%\"
Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение NiOl »

Уважаемы NiOl,

при тестировании выполнения данного скрипта, премещение файлов не происходит, вот ошибки в логе

Skiping copy file.cmd (27.04.2010, wait=1)

Skiping creat and copy folders(Є®«-ў® ¤*Ґ©).cmd (05.04.2010, wait=2)

Skiping Creat and copy folders(Є®«-ў® Ї*Ї®Є).cmd (05.04.2010, wait=2)

Skiping Creat folders.cmd (01.04.2010, wait=3)

Skiping Last5.log (27.04.2010, wait=1)

Skiping copy file.cmd (27.04.2010, wait=1)

Skiping creat and copy folders(Є®«-ў® ¤*Ґ©).cmd (05.04.2010, wait=2)

Skiping Creat and copy folders(Є®«-ў® Ї*Ї®Є).cmd (05.04.2010, wait=2)

Skiping Creat folders.cmd (01.04.2010, wait=3)

Skiping Last5.log (27.04.2010, wait=1)

Skiping copy file.cmd (27.04.2010, wait=1)

Skiping creat and copy folders(Є®«-ў® ¤*Ґ©).cmd (05.04.2010, wait=2)

Skiping Creat and copy folders(Є®«-ў® Ї*Ї®Є).cmd (05.04.2010, wait=2)

Skiping Creat folders.cmd (01.04.2010, wait=3)
Аватара пользователя
zavoruev

Re: CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку

Сообщение zavoruev »

WinRar решает Вашу проблему в одну строчку в назначенных заданиях, и не надо изобретать велосипед. Разве что проблема в лицензии ... Если хотите, напишу


Цитата NiOl:



1. Запускать скрипт нужно из каталога, откуда файлы переносятся
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку




- это приведёт в конце концов к тому, что и скрипт перенесётся и запускать будет нечего. Это совершенно неверно, просто надо указывать полный путь в скрипте.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»