Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Упаковка файлов в архив "rar" c определенным именем.

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


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

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


Добрый день!
Хочу обратится за помощью к Вам.
Имеется программа которая выгружает данные в файлы (за день это может отказаться от 10 до 50 файлов) с именем и расширением "1409250400149275.S01" (как образец).
Мне необходимо архивировать все файлы с содержанием первых 6 символов "140925"0400149275.S01 (расширение тоже имеет разные имя).
Первые шесть символов это дата выгруженного файла (Год, меся, число). Как или при помощи чего можно упаковать в архив "rar" (Архиватор WinRar имеется) задав параметр нужной даты?

Отправлено: 14:38, 01-10-2014

 

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


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

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


Цитата Iska:
Вызывать посредством:
Код: Выделить весь код
"Путь\MakeMyArc.cmd" 010914
ибо никаких предположений о формате даты/времени не делается, кроме одного — переданный параметр должен состоять ровно из шести цифр. »
То есть, правильно я понимаю. Если я вызову:
Код: Выделить весь код
"Путь\MakeMyArc.cmd" 010914
То он все равно будит искать файлы с именем 140901 (год, месяц, число)?

Отправлено: 12:43, 02-10-2014 | #11



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

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


Ветеран


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

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


Цитата rastorgujewo:
То он все равно будит искать файлы с именем 140901 (год, месяц, число)? »
Нет. Я же говорю: будет искать ровно как указали — по маске «010914*.*».

Отправлено: 12:51, 02-10-2014 | #12


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


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

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


Цитата Iska:
Нет. Я же говорю: будет искать ровно как указали — по маске «010914*.*». »
Я понял. Можно регулировать имя выходного архива "rar"? Независимо от маски...

Отправлено: 12:58, 02-10-2014 | #13


Ветеран


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

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


Цитата rastorgujewo:
Можно регулировать имя выходного архива "rar"? Независимо от маски... »
Можно. Кто ж запрещает .

Отправлено: 13:25, 02-10-2014 | #14


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


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

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


А такой вопрос:
Если надо упаковать аналогичные файлы но расположенные в другом месте "D:\ininfo\ss\arhiv", мне надо изменить путь только в строке:
Код: Выделить весь код
set sSourceFolder=C:\out\ss
Правильно?

Отправлено: 17:24, 02-10-2014 | #15


Ветеран


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

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


rastorgujewo, да.

Отправлено: 17:40, 02-10-2014 | #16


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


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

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


Iska, еще раз Вам СПАСИБО!
У меня есть еще один вопрос если не против:
Как мне создать перечень (задание) в том же (или аналогично) где заранее можно перечислить необходимые числа (маску)?
И в продолжение имеющегося скрипта (если можно так сказать. Как сделать чтобы также в архив упаковывал файлы за месяц (год, месяц. Файлы те же самые)? Попробовал но не получилось ошибка "Date mask [1409] probably error".

Последний раз редактировалось rastorgujewo, 06-10-2014 в 14:30.


Отправлено: 13:22, 06-10-2014 | #17


Ветеран


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

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


Создать можно. Например, в текстовом файле. Вопрос в том. что предполагается делать с этим перечнем?

Отправлено: 15:14, 06-10-2014 | #18


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


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

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


Цитата Iska:
Вопрос в том. что предполагается делать с этим перечнем? »
Создать заранее команды с датами для упаковки в архив:
Код: Выделить весь код
"Путь\MakeMyArc.cmd" 140901
"Путь\MakeMyArc.cmd" 140902
"Путь\MakeMyArc.cmd" 140903
И так далее.
Цитата rastorgujewo:
Как сделать чтобы в архив упаковывал файлы за месяц (год, месяц. Файлы те же самые)?
Попробовал но не получилось ошибка "Date mask [1409] probably error". »
Подскажешь?

Отправлено: 08:12, 07-10-2014 | #19


Ветеран


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

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


Цитата rastorgujewo:
Создать заранее команды с датами для упаковки в архив: »
Не так. Иначе (не проверялось):
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\out\ss
set sDestFolder=C:\out_ftp\ss
set sFileMask=%~1
set sWinRARPath=%ProgramFiles%\WinRAR\WinRAR.exe

if exist "%sSourceFolder%\." (
	if exist "%sDestFolder%\." (
		if defined sFileMask (
			if exist "%sFileMask%" (
				if exist "%sWinRARPath%" (
					for /f "usebackq delims=" %%i in ("%sFileMask%") do (
						set sMask=%%~i
						echo Mask: !sMask!
						echo !sMask!| >nul 2>&1 findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9][0-9][0-9]$" || (
							echo Date mask [!sMask!] probably error.
							exit /b 4
						)
						
						>nul 2>&1 dir /b "%sSourceFolder%\!sMask!*.*" || (
							echo Nothing found by Date mask [!sMask!*.*] in source folder [%sSourceFolder%].
							exit /b 6
						)
						
						"%sWinRARPath%" a -ep "%sDestFolder%\!sMask!ss.rar" "%sSourceFolder%\!sMask!*.*"
					)
				) else (
					echo Can't find [%sWinRARPath%].
					exit /b 5
				)
			) else (
				echo Can't find Date masks file [%sFileMask%].
			)
		) else (
			echo Usage: %~nx0 ^<Date masks file^>
			exit /b 3
		)
	) 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

Путь к файлу с масками дат указываете параметром пакетного файла.

Цитата rastorgujewo:
Как сделать чтобы также в архив упаковывал файлы за месяц (год, месяц. Файлы те же самые)? »
«Также» не получится. Уберите в коде:
Код: Выделить весь код
… findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9][0-9][0-9]$" …
две последних группы классов «[0-9]». Если хотите дополнительно оставить возможность задания и полной маски («ГГММДД») — уберите и завершающий ограничитель «$», тогда можно будет задавать и «ГГММ», и «ГГММДД» (и «ГГММлюбая прочая белиберда» ).

Отправлено: 22:08, 07-10-2014 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] упаковка содержимого файлов в cab архив tr011_tmn Скриптовые языки администрирования Windows 15 05-04-2015 11:43
2010 - проблема открытия файлов ворд с определенным именем Pozia Microsoft Office (Word, Excel, Outlook и т.д.) 5 29-04-2011 23:16
Упаковка/распаковка файлов rar, zip, удалённо!? 8Toxa8 Хочу все знать 3 22-12-2009 14:14
Как взломать быстро RAR архив? swoop Хочу все знать 9 23-06-2008 21:01
помогите раскрыть RAR-архив Igal Хочу все знать 5 11-11-2002 10:47




 
Переход