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

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

Ответить
Настройки темы
CMD/BAT - [решено] Архивация с помощью cmd с условием

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


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

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


Добрый день!
Прошу помощи сделать батник.
Необходимо архивировать файлы с помощью командной строки, файлы логов с названием типа QWE_123456, WER_123456, ERT_123456, RTY_123456.. номер которых повторяется 5 раз, а буквы разные , необходимо архивировать их так чтобы в каждом архиве было 5 файла с одинаковыми номерами ,но не буквами и при этом надо учесть, что возможна ситуация когда есть часть файлов, например только один номер. В этом случае надо создать архив, а при следующем запуске батника обновить данный архив новыми файлами при их наличии.

Отправлено: 14:47, 19-10-2021

 

Ветеран


Contributor


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

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


Цитата Kofeinchik:
архивировать их так чтобы в каждом архиве было 5 файла с одинаковыми номерами »
А почему 5, а больше 5 может быть? Что тогда делать?
Цитата Kofeinchik:
123456 »
это случаем не дата (в каком формате?). А что с исходными файлами после архивации? Какое, кстати, у нах расширение? Остаются на месте или должны быть или перемещены или удалены?
Откуда берутся номера? Вы их руками собираетесь как-то определять или надо просмотреть всю папку и обработать все возможные найденные номера? Число букв в имени всегда одинаково?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 19-10-2021 в 16:26.

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

Отправлено: 16:09, 19-10-2021 | #2



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

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


Ветеран


Contributor


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

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


Вот вариант (пути пропишИте свои):
В указанной папке BoxIn просматриваются файлы вида SSS_NNNNNN.* (S-любой символ, N - цифра)
архивируются в другую папку BoxArc
При наличии файлов в ранее созданном архиве переархивироваться будут только более свежие файлы.
При отсутствии файлов в соответствующем архиве они будут добавлены в архив.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxArc=Z:\Box_Arc"

	Set "ARC=C:\Program Files\WinRAR\WinRAR.exe"

	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\???_??????.*" /B /A:-D ^|FindStr /I /R /C:"^..._[0-9][0-9][0-9][0-9][0-9][0-9]"`) Do (
		Set "Name=%%~nf"
		Call Set "Name=%%Name:~-6%%"
		Call Echo "%%f" %%Name%%
		Call "%ARC%" u -ibck -ep "%BoxArc%\%%Name%%" "%BoxIn%\%%f"
	)
pause
Exit /B
7-Zip
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxArc=Z:\Box_Arc"

	Set "ARC=C:\Program Files\7-Zip.21beta\7z.exe"
 
	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\???_??????.*" /B /A:-D ^|FindStr /I /R /C:"^..._[0-9][0-9][0-9][0-9][0-9][0-9]"`) Do (
		Set "Name=%%~nf"
		Call Set "Name=%%Name:~-6%%"
		Call Echo "%%f" %%Name%%
		>nul Call "%ARC%" u -tzip "%BoxArc%\%%Name%%.zip" "%BoxIn%\%%f"
	)
pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-10-2021 в 20:42.

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

Отправлено: 17:52, 19-10-2021 | #3


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


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

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


Цитата:
А почему 5, а больше 5 может быть? Что тогда делать?
Больше 5 файлов в одном архиве быть не может.
Цитата:
это случаем не дата (в каком формате?). А что с исходными файлами после архивации? Какое, кстати, у нах расширение? Остаются на месте или должны быть или перемещены или удалены?
Откуда берутся номера? Вы их руками собираетесь как-то определять или надо просмотреть всю папку и обработать все возможные найденные номера? Число букв в имени всегда одинаково?
Номер это порядковый , расширение .m, нужно просматривать всю папку и закидывать в архивы, число букв и номеров всегда одинаковое.
Цитата:
Вот вариант (пути пропишИте свои):
В указанной папке BoxIn просматриваются файлы вида SSS_NNNNNN.* (S-любой символ, N - цифра)
архивируются в другую папку BoxArc
При наличии файлов в ранее созданном архиве переархивироваться будут только более свежие файлы.
При отсутствии файлов в соответствующем архиве они будут добавлены в архив.
Спасибо , Использовал код 7-zip , но почему-то через батник архивы не создаются, а если из командной строки то создается пустой безымянный архив , в чем может быть причина?

Отправлено: 08:54, 20-10-2021 | #4


Ветеран


Contributor


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

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


Kofeinchik, переименуйте Ваш батник в .txt файл и приложите к сообщению.
Имхо, Вы где-то напутали в путях. При работе батника должны отображаться имена исходных файлов. Они отображаются? Вообще, что Вы видите при работе батника на консоли?
Для отладки вставьте в батник со своими путями строку, которая организует на C: лог-файл. Приложите его к сообщению.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "BoxArc=Z:\Box_Arc"

	Set "ARC=C:\Program Files\7-Zip.21beta\7z.exe"

	>"C:\%~nx0.log" (Dir "%BoxIn%" &Dir "%BoxArc%" &Dir "%ARC%") 
 
	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\???_??????.*" /B /A:-D ^|FindStr /I /X /R /C:"^..._[0-9][0-9][0-9][0-9][0-9][0-9]"`) Do (
		Set "Name=%%~nf"
		Call Set "Name=%%Name:~-6%%"
		Call Echo "%%f" %%Name%%
		>nul Call "%ARC%" u -tzip "%BoxArc%\%%Name%%.zip" "%BoxIn%\%%f"
	)
pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-10-2021 в 10:02.

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

Отправлено: 09:52, 20-10-2021 | #5


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


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

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


Цитата:
Имхо, Вы где-то напутали в путях. При работе батника должны отображаться имена исходных файлов. Они отображаются? Вообще, что Вы видите при работе батника на консоли?
Если удалить строчку с FindStr архивация происходит , также может быть проблема в том что в имени файла есть файлы с 3 буквами и 4мя (только щас заметил) , но номер количество цифр одинаковое. Логи пока не могу дать.

Отправлено: 10:25, 20-10-2021 | #6


Ветеран


Contributor


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

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


Kofeinchik, Надо так (после Ваших уточнений):
Код: Выделить весь код
	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\*_??????.*" /B /A:-D ^|FindStr /I /R /C:"^.*_[0-9][0-9][0-9][0-9][0-9][0-9]"`) Do (
Если у файлов гарантированно есть расширение, то лучше так:
Код: Выделить весь код
	For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\*_??????.*" /B /A:-D ^|FindStr /I /R /C:"^.*_[0-9][0-9][0-9][0-9][0-9][0-9]\."`) Do (

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 10:58, 20-10-2021 | #7


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


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

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


megaloman, Спасибо большое, так заработало.

Отправлено: 12:07, 20-10-2021 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Определить издание Windows с условием. (cmd\bat) PavelVolia86 Скриптовые языки администрирования Windows 6 13-04-2014 09:57
WMI - [решено] Запрос через CMD к DiskDriveToDiskPartition с условием не срабатывает Dragokas Скриптовые языки администрирования Windows 2 28-03-2013 23:08
2008 R2 - Wbadmin + cmd и архивация системного диска - как правильнее будет? Vladskiy Windows Server 2008/2008 R2 14 20-03-2013 08:38
CMD/BAT - [решено] CMD, rar архивация файлов ( листинг ) из каталога.. sleepnow Скриптовые языки администрирования Windows 1 13-12-2012 13:56
Архивация файлов с помощью 7zip, имена которых содержат пробел MONaH Rasta AutoIt 7 12-11-2012 13:36




 
Переход