выбрать, заархивировать, скопировать
Доброго времени суток!
Помогите пожалуйста вот с чем. В определенную папку, допустим с:\temp, каждый день создается бэкап, нужно этот файл определить по дате, заархивировать (если возможно присваивать каждый раз архиву имя в виде даты архивации) и потом готовый архив скопировать на другой компьютер по сети. Спасибо. |
1. Вы уверены, что в папке со временным мусором, коего за день может быть не одна сотня файлов, вы можете выловить нужный файл, только потому, что дата его создания равна сегодняшней дате?
Посмотрите, сколько файлов удовлетворит Вашему условию: Код:
@echo off Если же у Вас только один файл и он - тот, что нужен - чтож, вынужден Вас поздравить. Тогда попробуйте сейскрипт: Код:
@echo off Также, в переменных %SrcDir% и %Server% указываются (ВАМИ) пути к каталогу поиска и к папке на сервере. |
Спасибо большое. То что нужно.
Признаю, не совсем корректный пример привел с папкой с:\temp Еще одна маленькая прозьба, если возможно. После копирования созданного архива на новое место, удалить его там где он создавался, дабы не накапливались архивы в двух местах. Спасибо! |
Цитата:
просто замените copy /b на move /y в догонку - а файл "бэкапа" часом удалять ненадо? Цитата:
|
NiOl, полностью согласен с Вами, и если надежность на первом месте, то лучше оставить Copy, потом сравнить размеры файлов архивов, дабы убедится, что файл дошел до получателя в целости, а потом удалять локальный архив (при желании и исходный файл).
|
поясните пожалуйста несколько моментов:
1. Код:
for %%f in (%SrcDir%\*.*) do call :cmp %%~tf "%%f" 2. откуда идет вызов этого скрипта? Немного не понимаю почему не указывается путь, откуда запускается 7z 3. что означает ключ /w после start? В хелпе это не описано или я невнимательно прочла |
Цитата:
%%~tf - дата\время создания файла (подробнее см. FOR /? ). Этот параметр в п\п будет в переменной %1 %%f - имя файла. Этот параметр в п\п будет в переменной %2, правда в коде она, видимо ошибочно, прописана как %3, т.к. %2 я не увидел. Цитата:
Цитата:
Цитата:
|
попыталась повторить сделать что-то подобное.
Сначала объясню ситуацию. мне нужно из папки scan все содержимое архивировать в zip c названием ггггммдд и переносить в папку arhive, после чего папка scan должна быть пустая. Структура папок в приложении. Код:
@echo on |
Цитата:
2 В этом одном архиве должна быть заархивирована сама папка scan или только ее содержимое, т.е. в архиве все должно быть БЕЗ папки scan ? |
Цитата:
Цитата:
|
Код:
@echo Off |
Здорово. Все оказалось намного проще =)
Только еще один момент. Нужно обойтись одним скриптом. Структура папок такова: something | |_MSK | | | |_scan | |_arhive | |_SPB | |_scan |_arhive Нужно для MSK делать тоже самое, что и для SPB |
Код:
@echo Off |
Можно еще один глупый вопрос?
Я так и не поняла, что означает 1>Nul и 2>Nul Не могли бы вы пояснить это |
Цитата:
1>Nul и 2>Nul |
не внимательно искала :blush2:
Огромное спасибо за помощь =) |
А как можно реализовать проверку: если папка scan пустая, то ничего не делать.
Сейчас он в любом случае создает архив, даже если файлов нет, то архив получается пустой дописала строчку перед самим архивированием if not exist "!SrcDir%%i!\*.*"goto End но он все равно создает пустой архив. Как правильно ему указать, что нужно проверять наличие файлов в папке, а не существование самой папки Запись dir "%ScrDir%%i\*%" /a-d 2>nul >nul && goto 1 тоже не дает желаемого эффекта |
Цитата:
Код:
@Echo Off |
Цитата:
Код:
dir "E:\Песочница\0031\*.*" /a:-d 1>nul 2>&1 && echo 1 || echo 2 |
Большое спасибо. Понимаю, что мои проблемы в том, что я не знаю команд.
Цитата:
Код:
dir "%SrcDir%%i%\*" /a-d 2>Nul >Nul && goto1 |
Цитата:
|
У меня пишет: "7z не является внутренней или внещней командой...", подскажите что не так.
я разобрался - скопировал 7z.exe в папку с батником. |
Время: 16:44. |
Время: 16:44.
© OSzone.net 2001-