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

Извлечение файлов из архива по заданным условиям с переименованием

26.04.2018, 13:06. Показов 3225. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Есть одна задача, но опыта для ее реализации пока недостаточно, поэтому нужна ваша помощь.
Есть папка, в которой располагаются архивы.
Необходимо в этой папке найти последний измененный zip архив и извлечь оттуда только pdf файлы (их всегда два).
Файлы извлекаются в другую директорию.
После извлечения файлы нужно переименовать, используя для этого часть названия архива.
Название архивов выглядит следующим образом: XXXXX__NNNNN_CCCC
файлы нужно переименовать NNNNN_1, и NNNNN_2

Буду очень признателен за помощь в решении такой задачи.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2018, 13:06
Ответы с готовыми решениями:

Извлечение из архива .ARJ с переименованием файлов
Добрый день! Есть папка с архивами типа dd.mm.yyyy namefile.arj внутри архива один файл без расширения. Необходимо извлечь из...

Извлечение файлов из архива
Вобщем есть кнопочка, при нажатии которой, извлекается файл в нужной мне директории. Как сделать тихую разархивацию файлов, без всяких...

Автоматическое извлечение файлов из архива
Доброго времени суток! Подскажите как сделать, так чтоб при добавления архива на сервер он сам разорхивировался в определенную папу на...

11
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
26.04.2018, 15:51
Лучший ответ Сообщение было отмечено Erl81 как решение

Решение

Erl81
если в именах архивов меняется часть: CCCC, то:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
set "D1=C:\Inbox"
set "D2=C:\Outbox"
set "arx=%ProgramFiles%\7-Zip\7z.exe"
set "ear=7z"
set "mask=pdf"
 
if not exist "%D2%" md "%D2%"
pushd "%D1%"
 for /f "tokens=3*" %%a in ('dir /a-d/od "*.%ear%"^|findstr/rc:"^[^ ]"') do set "nf=%%b"
 for /f "tokens=2 delims=_" %%a in ("%nf%") do set "nm=%%a"
 call :# "%arx%" "%nf%" $ "*.%mask%" "%nm%" "%D2%"
popd
pause& exit
 
:# [Архиватор] [Архив] [Врем. папка] [Расш. извл. файлов] [Маска имен] [Путь назначения]
 setlocal enabledelayedexpansion
  "%~1" x "%~2" -o"%~3" "%~4" -r
  for /f "delims=" %%a in ('2^>nul dir /a-d/b/s "%~3"') do set /a n+=1& >nul move "%%a" "%~6\%~5_!n!%%~xa"
  rd /s /q "%~3"
 endlocal
exit /b
1
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 6
03.05.2018, 17:21  [ТС]
alpap, Большое спасибо за помощь!
в условии, правда, появились дополнительные уточнения, и пока так и добрался до рабочего варианта.
Поиск "свежих" архивов должен осуществляться также во всех подпапках и в имени архива меняются все значения, но вытаскивать необходимо только второе значение, в примере NNNNN
Поможете?
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
03.05.2018, 18:00
Erl81,
всего-то?
в строке 10 сделайте изменение:
Windows Batch file
1
2
3
...
for /f "tokens=3*" %%a in ('dir /a-d/s/od ...
...
1
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 6
04.05.2018, 16:03  [ТС]
alpap, Добавлял атрибут /s, нужный архив он находит, но выдает ошибку ERROR: не удается найти указанный файл. и далее название последнего измененного архива. Поэтому подумал, что возможно где-то нужно еще поправить. Если архив лежит в корне, то распаковывает отлично.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
04.05.2018, 17:21
Цитата Сообщение от Erl81 Посмотреть сообщение
нужный архив он находит, но выдает ошибку ERROR: не удается найти указанный файл
а ну поясните, вы хотите найти последний измененный файл (т.е. архив) или последний измененный файл находящийся в архиве?
Проверьте где вы ищете: set "D1=C:\Inbox" (это мой путь)
Проверьте что ищете: set "ear=7z" (у меня архивы 7z, у вас возможно zip)
командой:
Windows Batch file
1
2
3
for /f "tokens=3*" %%a in ('dir /a-d/s/od "*.расширение"^|findstr/rc:"^[^ ]"') do set "nf=%%b"
echo %nf%
pause
запущенной из основной папки вы однозначно найдете последний измененный файл (архив) в этом каталоге.

Добавлено через 3 минуты
и сохраняйте код в кодировке OEM 866, может у вас есть кириллица в путях (именах).
1
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 6
07.05.2018, 18:49  [ТС]
Необходимо найти последний измененный архив, и код его находит, но файлы из архива не извлекает.
Добавил скрин простого примера вместе с ошибкой, возможно поможет.
Архивы все в zip. Кириллицы в именах нет.
Спасибо!
Миниатюры
Извлечение файлов из архива по заданным условиям с переименованием  
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.05.2018, 23:18
Цитата Сообщение от Erl81 Посмотреть сообщение
но файлы из архива не извлекает
сейчас заплАчу!

Цитата Сообщение от Erl81 Посмотреть сообщение
Название архивов выглядит следующим образом: XXXXX__NNNNN_CCCC
и посмотрите на свое название архива - нет разницы? Начинаете злить.

Давайте имена с десяток архивов или сделайте гарантированную маску и с четким описанием какой именно кусок имени файла вам нужен.
0
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 6
08.05.2018, 16:27  [ТС]
Название архивов такого вида "117019382_50363677_08.05.2018_505005851 0"
первоначально архивы были из трех частей, вроде "117019382_50363677_08052018", какой указан в условии, поэтому я Вас понимаю, но нужна из названия только вторая часть, в примере "50363677", независимо от кол-ва частей в названии архива. Но, я уточнил, все последующие архивы, будут такого вида "117019382_50363677_08.05.2018_505005851 0".
Очень надеюсь на Вашу помощь, а по ходу вопроса вникаю в тему, но пока не получается подправить так, чтобы заработало.
Спасибо!
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
08.05.2018, 21:24
Цитата Сообщение от Erl81 Посмотреть сообщение
независимо от кол-ва частей в названии архива
на bat я не возьмусь (нудно и длинно) разбирать такие имена или одинаковая маска всегда или просите не на bat.
0
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 6
10.05.2018, 15:29  [ТС]
ок, а как можно поправить, чтобы работало только для такого варианта?
117019382_50363677_08.05.2018_5050058510
или как раз этот вариант все усложняет?
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
12.05.2018, 01:22
Erl81,
да нет вообще разницы для какого варианта, если вам просто вторая часть имени после _ нужна
то что у вас не извлекает файлы проблема скорее в архиваторе. Если он x64, то скорее лежит не по этому пути:
set "arx=%ProgramFiles%\7-Zip\7z.exe"
найдите в папке своего архиватора 7z.exe и скопируйте его полный путь или пропишите в Path
вот пример работы с вашими новыми именами:


проблем нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2018, 01:22
Помогаю со студенческими работами здесь

Извлечение файлов из архива ZIP
В общем не получается нормально работать с zip файлами. Хотел работать стандартными средствами .net платформы, но как то не получилось...

Извлечение файлов из архива ZIP
Привет друзья ! Возникла необходимость загружать файл из интернета (он в формате ZIP) и делать его декомпрессию т.е. извлечение файлов...

Извлечение из архива конкретного файла (файлов)
Доброго времени суток. Есть программа, которая по списку, находящемуся в ListBox копирует файлы в выбранную пользователем папку. В списке...

Извлечение файлов из SFX-архива в указанную папку
Всех с прошедшим!Не знал куда написать,напишу сюда Подскажите как сделать программу которая извлекает файлы в указанную папку. Видел где-то...

Извлечение файлов и папок из архива по указанному пути
Нужно каким-то образом извлечь все файлы в указанный путь из архива. Например. Нажимаешь на кнопку, после чего идет автоматическое...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru