Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177

Обновление rar-архивов с отправкой на E-mail

13.05.2022, 14:56. Показов 3826. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, снова я!

Сделал я батничек, на все варианты e-mail.
И принцип такой, что добавляется в архив PDF-сопроводительного письма (одно письмо на всех) - и отправляется по e-mail.
Windows Batch file
1
"C:\Program Files\WinRAR\winrar" a "Организация-220512.rar" "Сопровод*.PDF" -u -y -ILOGerr.log -iemlorg@mail.ru
ОТЛИЧНО!
Но оказалось, что если архива нет, и файлов небыло для отправки. Создаётся архив с сопроводиловкой и направляется!

Неужели ставить условие на существование архива, или можно средствами WinRARа решить?!
Посмотрел ключи командной строки, не нашёл что-то...
Неужели условие добавлять...

Добавлено через 1 час 7 минут
Ха!
Думал поможет так:
Windows Batch file
1
if exits "Организация-220512.rar" ("C:\Program Files\WinRAR\winrar" a "Организация-220512.rar" "Сопровод*.PDF" -u -y -ILOGerr.log -iemlorg@mail.ru)
Пишет:
Code
1
"Непредвиденное появление "Организация-220512.rar"
Вот здесь подсмотрел проверку:
Проверка наличия файла в папке + действие

Как же сделать?!

Добавлено через 1 минуту
Цитата Сообщение от FlasherX Посмотреть сообщение
И не поможет. Имя существующего архива не может быть маской.
А можно из этого цикла сделать прыжок в условие?
По найденному имени архива в условии (массиве) находим e-mail и прыгаем в команду архивирования подставив e-mail.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2022, 14:56
Ответы с готовыми решениями:

Опасность RAR архивов
Можно ли что то подцепить от RAR архива, который не является самораспаковывающимся exe приложением? Возможно ли заразится чем-то при: ...

Распаковка rar-архивов
Перепрбывал много чего и в том числе сторонние библиотеки, вот код, надо расспаковать два архива. Через создание процесса не работает....

Методы восстановления RAR архивов
Существует ли в природе утилит который производит восстановления RAR архивов путём сравнения исходного файла на файлообменнике с уже...

42
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
15.05.2022, 16:16  [ТС]
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от FlasherX Посмотреть сообщение
Уже на ты перешли?
Извините... Опечатался в азарте...



Цитата Сообщение от FlasherX Посмотреть сообщение
Была вчерашняя дата в имени, стало сегодняшняя. При чём тут удаление? Удалишь, а оказалось, что на почту не дошло. И кирдык.
Я тогда вживую не пробовал ещё.
Это сейчас вижу, что именно так и работает. Кол-во архивов не меняется. А дата в имени и содержимое - правильное.

Цитата Сообщение от FlasherX Посмотреть сообщение
проблема с кодировками текста...
Я пользуюсь Notepad++. Не сразу понял, что надо менять сразу кодировку. Спасибо.

Цитата Сообщение от FlasherX Посмотреть сообщение
Меняем - на _ в 4 строке после delims=. Делов-то?
Нет, не всё так просто...
Поменял на:
Windows Batch file
1
for /f "tokens=1* delims=-22" %%f in ('dir/a-d/b *.rar') do (if /i "%%g" neq "%d%" ren "%%f-%%g" "%%f-%d%%%~xg"
Вот файлы:
Code
1
2
3
4
5
Организация 1-220510.rar
Организация_3-220510.rar
Организация-2-220510.rar
Организация-4-220510.rar
Орга-низация_5-220510.rar
Вот список в конце батника:
Windows Batch file
1
2
3
4
5
Организация 1:z@mail.ru
Организация-2:z@mail.ru
Организация_3:z@mail.ru
Организация-4:z@mail.ru
Орга-низация_5:z@mail.ru
Результат работы батника, просто два новых архива где только pdf-файл:
Code
1
2
Организация 1-220515.rar
Организация_3-220515.rar
Архив "Организация-4-220510.rar" почему-то просто переименовался в "Организация-220515.rar"!!!
А "Орга-низация_5-220510.rar" удалён!

Где-то ещё надо указать "-22", но не пойму почему...

Добавлено через 11 минут
Вот какие архивы:
Организация 1-220510.rar12 69215.05.2022 15:45:0410.05.2022 12:00:00   
Организация 1-220515.rar15 25315.05.2022 15:52:0315.05.2022 15:52:03   
Организация_3-220510.rar12 69215.05.2022 15:45:0410.05.2022 12:00:00   
Организация_3-220515.rar15 25315.05.2022 15:52:0415.05.2022 15:52:04   
Организация-2-220510.rar12 69215.05.2022 15:45:0410.05.2022 12:00:00   
Организация-220515.rar11 53315.05.2022 15:45:0410.05.2022 12:00:00   

Добавлено через 7 минут
Цитата Сообщение от ZorKon71 Посмотреть сообщение
А "Орга-низация_5-220510.rar" удалён!
Пардон!
он переименован в "Орга-220515.rar", и туда не добавлен PDF.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
15.05.2022, 16:32
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Нет, не всё так просто...
Поменял на: delims=-22
Ну что это за безобразие? Делителем выступает не фраза, а один из перечисленных символов. В справке же чётко обозначено: "набор разделителей". Поэтому ни о каких -22 и речи быть не может. Символ был предложен один. Двойка тут вообще ни к чему.
То бишь:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
for /f "tokens=2 delims==" %%d in ('wmic os get localdatetime /format:list') do set d=%%~nd
set d=%d:~2,2%%d:~4,2%%d:~6,2%
for /f "tokens=1* delims=_" %%f in ('dir/a-d/b *.rar') do (if /i "%%g" neq "%d%" ren "%%f_%%g" "%%f_%d%%%~xg"
for /f "tokens=1* delims=:" %%o in ('^<%0 more +7') do ^
if /i "%%f"=="%%o" "%ProgramFiles%\WinRAR\WinRAR.exe" u "%%f_%d%%%~xg" КТМО_Сопровод_форм*.pdf -ILOGerr.log -i%%p -y)
pause&exit
Организация 1:a@mail.ru
Организация 2:b@mail.ru
Организация 3:c@mail.ru
Организация 4:d@mail.ru
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
15.05.2022, 16:38  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Делителем выступает не фраза, а один из перечисленных символов.
Жаль что нельзя фразой.
Ок.
Значит просто в именах уберём дефис.

Спасибо.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
15.05.2022, 16:43
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Орга-низация_5:z@mail.ru
А зачем _ в самом имени? Разделитель должен идти после него. Между именем и датой.

Добавлено через 4 минуты
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Жаль что нельзя фразой.
В cmd это через одно место делается. Если бы дата была спереди, то без проблем.
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
15.05.2022, 16:49  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
А зачем _ в самом имени? Разделитель должен идти после него. Между именем и датой.
Я же говорил, есть организации у которых дефис в самом имени. Это я сейчас пройдусь, поменяю.
Для архива это не страшно. Главное в документах.
На счёт "капса" - опыт покажет...

Спасибо большое!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
15.05.2022, 16:52
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Это я сейчас пройдусь, поменяю.
А если в названии несколько дефисов? Поэтому и предложено поменять на подчёркивание именно разделитель.

Пожал'ста.
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
26.05.2022, 13:45  [ТС]
Доброго времени суток!

Решил по образу и подобию, сделать файл для упаковки вышеописанных архивов.
Должны искаться в каталоге файлы в соответствии с 4х значным кодом и упаковываться в архив с определённым именем+дата упаковки.
Windows Batch file
1
2
3
4
5
6
7
8
9
@Echo OFF&chcp 1251>nul
for /f "tokens=2 delims==" %%d in ('wmic os get localdatetime /format:list') do set d=%%~nd
set d=%d:~2,2%%d:~4,2%%d:~6,2%
for /f "tokens=1* delims=:" %%o in ('^<%0 more +6') do ^
%ProgramFiles%\WinRAR\WinRAR.exe a %%p-%d% *%%o*.doc* *%%o*.xls* -ILOGerr.log -y
pause&exit
QWER:Организация1
ASDF:Организация 2
ZXCV:Организация_3
Вроде бы всё правильно, но не запускается архиватор...
Я уже и кавычки добавлял - не помогло, что упустил?

Спасибо.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
26.05.2022, 21:36
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Я уже и кавычки добавлял - не помогло
А должно. У меня-то с кавычками.
И вообще при упаковке вычислять дату необязательно. Архиватор сам это умеет:
Windows Batch file
1
2
3
4
5
6
7
@chcp 1251>nul
@for /f "tokens=1* delims=:" %%o in ('^<%0 more +4') do @^
"%ProgramFiles%\WinRAR\WinRAR.exe" a -agYYMMDD "%%p-" *%%o*.doc* *%%o*.xls* -ILOGerr.log -ibck -y
@pause&exit
QWER:Организация1
ASDF:Организация 2
ZXCV:Организация_3
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
27.05.2022, 10:26  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Архиватор сам это умеет
Да, точно...
Спасибо!

Добавлено через 1 минуту
А вот про кавычки не вышло...
Code
1
2
3
4
5
6
""C:\Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
""C:\Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
""C:\Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
27.05.2022, 11:02
Windows Batch file
1
2
3
4
5
6
7
@chcp 1251>nul
@for /f "tokens=1* delims=:" %%o in ('^<%0 more +4') do @"%ProgramFiles%\WinRAR\WinRAR.exe" ^
a -agYYMMDD "%%p-" *%%o*.doc* *%%o*.xls* -ILOGerr.log -ibck -y
@pause&exit
QWER:Организация1
ASDF:Организация 2
ZXCV:Организация_3
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
27.05.2022, 15:43  [ТС]
Ничего себе тонктость!

Спасибо!
0
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
11.07.2022, 16:17  [ТС]
Доброго времени суток!
Пришлось добавить ещё одну организацию.
Откорректировал, сохранил, про это:
Цитата Сообщение от FlasherX Посмотреть сообщение
По умолчанию блокнот и многие другие редакторы сохраняют файл в ANSI. Вы сохранили в OEM 866, отсюда и грабли. В таком случае уберите &chcp 1251>nul в первой строке.
Помню.
Кодировка ANSI.
А архив найти не может!

Плюнул.
Сохранил батник в OEM866, убрал что Вы говорили в первой строке - не помогло!
Возвращаю старый батник - всё работает.
Правлю - облом.

Что не так с кодировкой?!
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
11.07.2022, 18:37
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Пришлось добавить ещё одну организацию.
Какую?
0
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
16.08.2022, 13:06  [ТС]
Доброго времени суток!

Хочу уточнить...
Code
1
2
3
4
5
pause&exit
Организация 1:a@mail.ru
Организация 2:b@mail.ru
Организация 3:c@mail.ru
Организация 4:d@mail.ru
А если для некоторых организаций не нужно отправлять по e-mail?
Что можно указать вместо адреса, что бы архив обновился, но не отправился?

Спасибо.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
16.08.2022, 13:56
Сформировать список, где нижняя часть идёт без отправки. Создавать в условии переменную set "i=-i...", по достижению счётчика на нужной строке освобождать set i=&.
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
16.08.2022, 17:02  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Создавать в условии переменную set "i=-i...", по достижению счётчика на нужной строке освобождать set i=&.
Понял, т.е. разделить список.
Хорошо, спасибо.

Добавлено через 1 час 35 минут
Раз отдельным списком, попробовал выделить в отдельный файл отправку на почту:
Windows Batch file
1
2
3
4
5
6
7
@chcp 1251>nul
@for /f "tokens=1* delims=:" %%o in ('^<%0 more +16') do @"%ProgramFiles%\WinRAR\WinRAR.exe" ^
m "%%p" *%%o*.* -agYYMMDD -ILOGerr.log -ibck -y -ieml%%q
@pause&exit
QWER:Организация1:a@mail.ru
ASDF:Организация 2:b@mail.ru
ZXCV:Организация_3:c@mail.ru
Не пойму, что не так?
Вроде кол-во токенов не ограничено!

Спасибо.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
16.08.2022, 17:40
Лучший ответ Сообщение было отмечено ZorKon71 как решение

Решение

Цитата Сообщение от ZorKon71 Посмотреть сообщение
Раз отдельным списком
Я про отдельность что-то писал? Список общий, условно разделённый по числу строк. Откуда взялось 16? И где работа со счётчиком?
Windows Batch file
1
2
3
4
5
6
7
8
9
@setlocal enabledelayedexpansion
@for /f "tokens=1* delims=:" %%o in ('^<%0 more +5') do @(
set/a c+=1&if !c! leq 2 (set "i= -ieml%%q") else set i=&
"%ProgramFiles%\WinRAR\WinRAR.exe" m "%%p" *%%o*.* -agYYMMDD -ILOGerr.log -ibck -y!i!)
@pause&exit
QWER:Организация1:a@mail.ru
ASDF:Организация 2:b@mail.ru
BXCV:Организация_3
ZXCV:Организация_4
Два верхних пойдут на мыло, два нижних — нет.
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
16.08.2022, 18:00  [ТС]
Ничего себе!
Я о таком и подумать не мог...

Цитата Сообщение от FlasherX Посмотреть сообщение
Откуда взялось 16?
Извиняюсь, не подправил...

Цитата Сообщение от FlasherX Посмотреть сообщение
И где работа со счётчиком?
разве не во второй строке?

Спасибо огромное!
Побегу пробовать...

Добавлено через 10 минут
Цитата Сообщение от FlasherX Посмотреть сообщение
Два верхних пойдут на мыло, два нижних — нет.
Наверное что-то с версией винды... по первым двум организациям и архивы не сформировались...
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
16.08.2022, 18:43
Цитата Сообщение от ZorKon71 Посмотреть сообщение
Наверное что-то с версией винды.
Забыл про ANSI:
Windows Batch file
1
@setlocal enabledelayedexpansion&chcp 1251>nul
0
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 177
17.08.2022, 09:09  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Забыл про ANSI:
Не... дело не в бабине... Файл в кодировке 866. Убрал переносы и т.п.
И имена файлов формируются правильно:
Организация_4-220817.rar
Организация_3-220817.rar
Windows Batch file
1
2
3
4
5
6
7
8
9
@Echo ON
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%o in ('^<%0 more +4') do (set/a c+=1&if !c! leq 2 (set "i= -ieml%%q") else set i=& "%ProgramFiles%\WinRAR\WinRAR.exe" a "%%p" *%%o*.* -ag-YYMMDD -ILOGerr.log -ibck -y!i!)
pause&exit
QWER:Организация1:zzzz@mail.ru
ASDF:Организация 2:zzzz@mail.ru
BXCV:Организация_3
ZXCV:Организация_4
AVKO:Организация5:xxx@mail.ru
Просто принципиально не видит третьего ключа!
Имя для архива подставляет вместе с адресом:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
D:\TEST>setlocal enabledelayedexpansion
 
D:\TEST>for /F "tokens=1* delims=:" %o in ('<"D:\TEST\111.bat" more +4') do (set
/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )  else set i=  & "C:\Program Files\Win
RAR\WinRAR.exe" a "%p" *%o*.* -ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>(set/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )
else set i=  & "C:\Program Files\WinRAR\WinRAR.exe" a "Организация1:zzzz@mail.ru
" *QWER*.* -ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>(set/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )
else set i=  & "C:\Program Files\WinRAR\WinRAR.exe" a "Организация 2:zzzz@mail.r
u" *ASDF*.* -ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>(set/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )
else set i=  & "C:\Program Files\WinRAR\WinRAR.exe" a "Организация_3" *BXCV*.* -
ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>(set/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )
else set i=  & "C:\Program Files\WinRAR\WinRAR.exe" a "Организация_4" *ZXCV*.* -
ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>(set/a c+=1  & if !c! LEQ 2 (set "i= -ieml%q" )
else set i=  & "C:\Program Files\WinRAR\WinRAR.exe" a "Организация5:xxx@mail.ru"
 *AVKO*.* -ag-YYMMDD -ILOGerr.log -ibck -y!i! )
 
D:\TEST>pause & exit
Для продолжения нажмите любую клавишу . . .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2022, 09:09

Распаковывание RAR архивов 7 zip в VBA
Здравствуйте, уважаемые форумчане. Как распаковать RAR архив при помощи 7 zip в VBA? Другого разархиватора на рабочих ПК нет, могу...

Удаление конкретного файла из архивов RAR
Всем добрый день! Хочу выполнить удаление конкретных файлов из архивов через bat, архив с каталогами. Имеется следующий батник: ...

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Скрипт Архивов - Не распаковывается RaR файл
Всем здравствуйте, написал скрипт, для переиминовывания файлов в архивах, Проблема такая с архивами zip все замечательно. Не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru