|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] выбрать, заархивировать, скопировать |
|
|
CMD/BAT - [решено] выбрать, заархивировать, скопировать
|
Новый участник Сообщения: 17 |
Профиль | Отправить PM | Цитировать Доброго времени суток!
Помогите пожалуйста вот с чем. В определенную папку, допустим с:\temp, каждый день создается бэкап, нужно этот файл определить по дате, заархивировать (если возможно присваивать каждый раз архиву имя в виде даты архивации) и потом готовый архив скопировать на другой компьютер по сети. Спасибо. |
|
Отправлено: 22:34, 15-11-2010 |
Старожил Сообщения: 426
|
Профиль | Отправить 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 Если же у Вас только один файл и он - тот, что нужен - чтож, вынужден Вас поздравить. Тогда попробуйте сейскрипт: @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 Также, в переменных %SrcDir% и %Server% указываются (ВАМИ) пути к каталогу поиска и к папке на сервере. |
------- Отправлено: 00:23, 16-11-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Спасибо большое. То что нужно.
Признаю, не совсем корректный пример привел с папкой с:\temp Еще одна маленькая прозьба, если возможно. После копирования созданного архива на новое место, удалить его там где он создавался, дабы не накапливались архивы в двух местах. Спасибо! |
Отправлено: 10:45, 16-11-2010 | #3 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата Hrust2010:
просто замените copy /b на move /y в догонку - а файл "бэкапа" часом удалять ненадо? Цитата gora:
|
||
------- Отправлено: 11:15, 16-11-2010 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать NiOl, полностью согласен с Вами, и если надежность на первом месте, то лучше оставить Copy, потом сравнить размеры файлов архивов, дабы убедится, что файл дошел до получателя в целости, а потом удалять локальный архив (при желании и исходный файл).
|
|
Отправлено: 11:39, 16-11-2010 | #5 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать поясните пожалуйста несколько моментов:
1. что означают параметры после cmp 2. откуда идет вызов этого скрипта? Немного не понимаю почему не указывается путь, откуда запускается 7z 3. что означает ключ /w после start? В хелпе это не описано или я невнимательно прочла |
Последний раз редактировалось Sirimika, 19-01-2011 в 16:41. Отправлено: 16:19, 19-01-2011 | #6 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Sirimika:
%%~tf - дата\время создания файла (подробнее см. FOR /? ). Этот параметр в п\п будет в переменной %1 %%f - имя файла. Этот параметр в п\п будет в переменной %2, правда в коде она, видимо ошибочно, прописана как %3, т.к. %2 я не увидел. Цитата Sirimika:
Цитата Sirimika:
Цитата:
|
||||
Отправлено: 09:42, 20-01-2011 | #7 |
Новый участник Сообщения: 41
|
Профиль | Отправить 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 |
Последний раз редактировалось Sirimika, 22-06-2012 в 09:16. Отправлено: 11:57, 20-01-2011 | #8 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Sirimika:
2 В этом одном архиве должна быть заархивирована сама папка scan или только ее содержимое, т.е. в архиве все должно быть БЕЗ папки scan ? |
|
Отправлено: 12:06, 20-01-2011 | #9 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Цитата gora:
Цитата gora:
|
||
Отправлено: 12:09, 20-01-2011 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - Не получается скопировать файл | 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 |
|