Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] выбрать, заархивировать, скопировать

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


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

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


Доброго времени суток!

Помогите пожалуйста вот с чем.
В определенную папку, допустим с:\temp, каждый день создается бэкап, нужно этот файл определить по дате, заархивировать (если возможно присваивать каждый раз архиву имя в виде даты архивации) и потом готовый архив скопировать на другой компьютер по сети.

Спасибо.

Отправлено: 22:34, 15-11-2010

 

Старожил


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

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


1. Вы уверены, что в папке со временным мусором, коего за день может быть не одна сотня файлов, вы можете выловить нужный файл, только потому, что дата его создания равна сегодняшней дате?

Посмотрите, сколько файлов удовлетворит Вашему условию:
Код: Выделить весь код
@echo off
setlocal EnableExtensions

for %%f in (c:\TEMP\*.*) do call :cmp %%~tf "%%f"
exit
:cmp
if %1==%date% echo %3
exit /b
у меня их оказалось более 2 десятков.

Если же у Вас только один файл и он - тот, что нужен - чтож, вынужден Вас поздравить.
Тогда попробуйте сейскрипт:
Код: Выделить весь код
@echo off
setlocal EnableExtensions

Set SrcDir=C:\TEMP
Set Server=\\MyServer\MyShare\MyDir

set dt=%Date%
for %%f in (%SrcDir%\*.*) do call :cmp %%~tf "%%f"
pause
exit
:cmp
if not %1==%dt% exit /b
set archName=%time::=-%
set archName=%date:~6,4%-%date:~3,2%-%date:~0,2%_%archName:~0,-3%.zip
set archName="%SrcDir%\%archName: =0%"
start /w "" 7za a %archName% %3
copy /b %archName% "%Server%\"
exit /b
в батнике в качестве архиватора использован "7za.exe". Если намереваетесь использовать другой архиватор - в переменной %archName% лежит имя архива, а в %3 - имя файла, совпавшего по дате, оба уже в кавычках.
Также, в переменных %SrcDir% и %Server% указываются (ВАМИ) пути к каталогу поиска и к папке на сервере.

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 00:23, 16-11-2010 | #2



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

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


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


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

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


Спасибо большое. То что нужно.
Признаю, не совсем корректный пример привел с папкой с:\temp

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

Спасибо!

Отправлено: 10:45, 16-11-2010 | #3


Старожил


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

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


Цитата Hrust2010:
После копирования созданного архива на новое место, удалить его там где он создавался, »
так я думал
просто замените copy /b на move /y

в догонку - а файл "бэкапа" часом удалять ненадо?


Цитата gora:
Тогда проще создавать архив сразу на сервере: »
много проще и удобнее, особенно в условиях нехватки локального дискового пространства, но с большими файлами опаснее - любой сетевой сбой (комп, а тем более сервак обычно висит на УПС, а сетевое оборудование запитано через УПС далеко не у всех)

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 11:15, 16-11-2010 | #4


Аватара для gora

Ушёл из жизни


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

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


NiOl, полностью согласен с Вами, и если надежность на первом месте, то лучше оставить Copy, потом сравнить размеры файлов архивов, дабы убедится, что файл дошел до получателя в целости, а потом удалять локальный архив (при желании и исходный файл).

Отправлено: 11:39, 16-11-2010 | #5


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


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

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


поясните пожалуйста несколько моментов:
1.
Код: Выделить весь код
for %%f in (%SrcDir%\*.*) do call :cmp %%~tf "%%f"
что означают параметры после cmp
2. откуда идет вызов этого скрипта? Немного не понимаю почему не указывается путь, откуда запускается 7z
3. что означает ключ /w после start? В хелпе это не описано или я невнимательно прочла

Последний раз редактировалось Sirimika, 19-01-2011 в 16:41.


Отправлено: 16:19, 19-01-2011 | #6


Аватара для gora

Ушёл из жизни


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

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


Цитата Sirimika:
что означают параметры после cmp »
Это параметры передаваемые в подпрограмму cmp:
%%~tf - дата\время создания файла (подробнее см. FOR /? ). Этот параметр в п\п будет в переменной %1
%%f - имя файла. Этот параметр в п\п будет в переменной %2, правда в коде она, видимо ошибочно, прописана как %3, т.к. %2 я не увидел.
Цитата Sirimika:
откуда идет вызов этого скрипта? Немного не понимаю почему не указывается путь, откуда запускается 7z »
Используется автономный архиватор 7za.exe, лежащий рядом со скриптом. В этом случае путь к нему можно не указывать.
Цитата Sirimika:
что означает ключ /w после start? В хелпе это не описано или я невнимательно прочла »
Ключ /w - одна из форм записи ключа /WAIT
Цитата:
WAIT - Запуск приложения с ожиданием его завершения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:42, 20-01-2011 | #7


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


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

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


попыталась повторить сделать что-то подобное.
Сначала объясню ситуацию.
мне нужно из папки scan все содержимое архивировать в zip c названием ггггммдд и переносить в папку arhive, после чего папка scan должна быть пустая.
Структура папок в приложении.

Код: Выделить весь код
@echo on 
setlocal EnableExtensions 
Set SrcDir=E:\something\SPB\scan 
Set Arhive=E:\something\SPB\arhive 

set dt=%Date% 
for %%a in (%SrcDir%\*.*) do call :cmp %%~ta 
pause 
exit 
:cmp 
if not %1==%dt% exit /b 
set arhName=%date:~6,4%%date:~3,2%%date:~0,2%.zip 
start /w "" 7z a -tzip %arhName% 
move /y %arhName% %Arhive% 
exit /b 
Set SrcDir=E:\something\MSC\scan 
Set Arhive=E:\something\MSC\arhive
у меня пока получается полная хрень. Он архивирует все что в папке something и создает архив в папке SPB с названием arhive и непонятно каких расширением.

Последний раз редактировалось Sirimika, 22-06-2012 в 09:16.


Отправлено: 11:57, 20-01-2011 | #8


Аватара для gora

Ушёл из жизни


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

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


Цитата Sirimika:
из папки scan все содержимое архивировать »
1 В один архив или каждый файл и каждую вложенную папку (а они у Вас там видимо есть) в отдельный архив?
2 В этом одном архиве должна быть заархивирована сама папка scan или только ее содержимое, т.е. в архиве все должно быть БЕЗ папки scan ?

Отправлено: 12:06, 20-01-2011 | #9


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


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

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


Цитата gora:
1 В один архив или каждый файл и каждую вложенную папку (а они у Вас там видимо есть) в отдельный архив? »
все должно быть в одном архиве

Цитата gora:
2 В этом одном архиве должна быть заархивирована сама папка scan или только ее содержимое, т.е. в архиве все должно быть БЕЗ папки scan ? »
только содержимое папки

Отправлено: 12:09, 20-01-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Не получается скопировать файл Teenko Microsoft Windows 2000/XP 6 16-02-2012 15:17
HDD - Не могу скопировать информацию alleclf Накопители (SSD, HDD, USB Flash) 14 13-02-2008 17:24
как скопировать сайт? Millenium Вебмастеру 12 25-06-2005 20:36
Посекторно скопировать HDD ? Sasha73 Непонятные проблемы с Железом 12 07-10-2004 13:07
Не могу скопировать папку в Win98 Rustik Microsoft Windows 95/98/Me (архив) 11 04-01-2003 21:47




 
Переход