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

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

Ответить
Настройки темы
CMD/BAT - [решено] батник для apxивaции набора пaпок

Ветеран


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

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


Пpoсьбa o пoмoщи к пpoфи. Кaк нaписaть пaкетный фaйл, apхивиpующий нaбop пaпoк (oни пеpечисл. в текстoвoм фaйле) в pезеpвную кoпию , и чтoбы oн aвтoмaтически генеpиpoвaл имя типa гoд_месяц_день#чaс_минутa.zip. Нaпpимеp (2013_06_10#20_10) испoльзуя язык пaкетных кoмaнд винды, и apхивaтop 7Zip. Вpемя дo пoлудня дoпoлнять лидиpующими нулями.

Отправлено: 20:13, 10-06-2013

 

Ветеран


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

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


r-studio, ясно. Выложите архив с Вашим файлом «listfile.txt» и Вашим «1.bat».

P.S. Ежели что-то «военное» — можете отослать архив непосредственно в личку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:13, 15-06-2013 | #11



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

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


Ветеран


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

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


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

Отправлено: 19:47, 15-06-2013 | #12


Ветеран


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

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


Цитата r-studio:
Отправил личное сообщение. »
Получил.

Как я и предполагал, Вы не придали должного внимания моему замечанию:
Цитата Iska:
О формате файла-списка, содержащего имена файлов и папок, прочтите в документации:
Код: Выделить весь код
hh.exe "mk:@MSITStore:%ProgramFiles%\7-Zip\7-zip.chm::/cmdline/syntax.htm#ListFile"
Обратите внимание на кодировку файла-списка. »
В итоге, Ваш файл «listfile.txt» в кодировке ANSI/1251, а 7-zip по умолчанию ожидает увидеть там UTF-8:
Непрочитанное Вами в файле справки 7-Zip…
Цитата:
For list files, 7-Zip uses UTF-8 encoding by default. You can change encoding using -scs switch.


Варианта два:

1. Сохранить файл-список в кодировке UTF-8.
2. Оставить кодировку ANSI/1251, а в командную строку вызова 7-Zip'а добавить параметр «-scsWIN»:
Код: Выделить весь код
		"%ProgramFiles%\7-Zip\7z.exe" a -ir@%sFolderList% -scsWIN "%sFileName%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:27, 15-06-2013 | #13


Ветеран


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

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


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

я просто пытаюсь понять.))

Отправлено: 23:14, 15-06-2013 | #14


Ветеран


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

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


Цитата r-studio:
а где, косяк то? »
Возможно, здесь:
Цитата r-studio:
Кaк нaписaть пaкетный фaйл, apхивиpующий нaбop пaпoк »
А Вы указываете перечень файлов. Уберите «r» из «-ir@%sFolderList%».

читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

call :GetDateTime
set sFileName=%DateTime:~0,4%_%DateTime:~4,2%_%DateTime:~6,2%#%DateTime:~8,2%_%DateTime:~10,2%.zip

set sFolderList=%~1

if defined sFolderList (
	if exist "%sFolderList%" (
		"%ProgramFiles%\7-Zip\7z.exe" a -i@%sFolderList% -scsWIN "%sFileName%"
	) else (
		echo Can't find folder list file [%sFolderList%].
	)
) else (
	echo Usage: %~nx0 ^<Folder list^>
)

endlocal
exit /b 0

rem ==========================================================================
rem Функция GetDateTime()
rem
rem Серый форум / CMD/BAT: получение формата дата-время для имени файла
rem (http://forum.script-coding.com/viewtopic.php?id=5066)
rem ==========================================================================
:GetDateTime
	setlocal enableextensions enabledelayedexpansion
	
	set sProcName=%~0
	for /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i
	
	endlocal & set %sProcName:~4%=%sDateTime:~0,14%
	exit /b 0
rem ==========================================================================
Код: Выделить весь код
╔═══════════════════════ H:\флеха ═╤══════╤════════╤═════╗╔════════════════════════ E:\123 ══╤══════╤════════╤═23:31
║и              Имя                │Размер│  Дата  │Время║║с              Имя                │Размер│  Дата  │Время║
║⌂..                               │ Вверх│15.06.13│23:28║║⌂..                               │ Вверх│15.06.13│23:29║
║ǂданные диссераl               xls│     0│15.06.13│23:28║║ 2013_06_15#23_29              zip│   334│15.06.13│23:29║
║ǂКак пользоваться DOS         docx│     0│15.06.13│23:28║║►1                             bat│  1130│15.06.13│23:29║
║                                  │      │        │     ║║ listfile                      txt│    66│15.06.13│19:41║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
║                                  │      │        │     ║║                                  │      │        │     ║
╟──────────────────────────────────┴──────┴────────┴─────╢╟──────────────────────────────────┴──────┴────────┴─────╢
║⌂..                                                     ║║►1.bat                                                  ║
╚═══════════════ 0 (2) ═══ 2,444,247,040 ════════════════╝╚══════════════ 1,530 (3) ═══ 118,665,216 ═══════════════╝

E:\123>1.bat listfile.txt

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Scanning

Updating archive 2013_06_15#23_29.zip

Compressing  данные диссераl.xls
Compressing  Как пользоваться DOS.docx

Everything is Ok

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

Отправлено: 23:32, 15-06-2013 | #15


Ветеран


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

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


Iska,

скопировал Ваш поправленный код, где нет r
делаю
вот скрин. опять он недоволен



Отправлено: 01:06, 16-06-2013 | #16


Ветеран


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

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


Ну, с этим-то всё просто. Текущим каталогом при вызове пакетного файла у Вас является «e:\», в котором, понятное дело, нет файла «listfile.txt» . Либо укажите при вызове абсолютный/относительный путь к файлу-списку, либо предварительно сделайте текущим каталог «e:\123», его содержащий.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:44, 16-06-2013 | #17


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


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

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


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

Последний раз редактировалось akbyn, 16-06-2013 в 07:37.


Отправлено: 07:14, 16-06-2013 | #18


Ветеран


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

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


Iska, вот теперь получилось. с этим 7zip гемора многа.

Отправлено: 10:08, 16-06-2013 | #19


Ветеран


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

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


Из писем в PM:
Цитата r-studio:
а можно Вас попросить в сам код батника … вставить к listfile
например , чтобы в самом батнике было прописано Е:\123\listfile.txt
Цитата r-studio:
тут тема в том, что надо чтобы юзер просто кликнул по батнику и пошла архивация.
без входа в командную строку. Так можно сделать?
Можно. Но не нужно.

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

Цитата r-studio:
с этим 7zip гемора многа. »
Ничуть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:06, 17-06-2013 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Батник для конвертирования данных в кодировку 1200 для reg-файла Nun-Nun Скриптовые языки администрирования Windows 5 23-01-2012 16:21
Офис и Текст - [решено] Ищу программу для набора книг на печать Erix Программное обеспечение Windows 3 27-05-2011 14:06
ошибку JRNL_WRAP_ERROR для набора репликации "DOMAIN SYSTEM VOLUME (SYSVOL SHARE) AlexMun Microsoft Windows NT/2000/2003 8 07-07-2009 14:20
батник для NTOS admart Лечение систем от вредоносных программ 2 17-10-2008 23:36




 
Переход