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

Копирование файлов с определенным именем и за текущую дату и двойная распаковка ARJ-архива

20.02.2013, 13:37. Показов 16437. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Опыта создания батников пока мало, поэтому обращаюсь за помощью к более знающим людям.
Нужно создать батник, котороый бы делал:
1. Искал в определенной папке файлы, который начинаются на "sz", то есть там много разных файлов, а нам нужны именно те, у которых вначале стоят эти буквы.
2. Искать нужно эти файлы только за текущий день, то есть сегодня запускаю, то и за сегодня ищет.
3. Ну и найденные файлы переносить в другой каталог.

Помогите в решении этой задачки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2013, 13:37
Ответы с готовыми решениями:

Распаковка архива с расширением .arj
Всем доброго времени суток. Ребята, не подскажите как можно распаковать архив с расширением .arj? Может какая -то библиотека есть для...

Распаковка архива форматом ARJ
Здравствуйте, изначально пробовал аналог распаковки zip фаила, но ничего не выходит, много гуглил, но ничего не нашел. Прошу подсказать,...

Распаковка архива с именем архива по маске
Всем привет! Понимаю, что тема с архивами уже избитая, но все же есть определенная задача. Прошу помощи. Задача состоит в следующем: ...

40
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.02.2013, 14:48
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=sz*.*
::введите исходную папку
set src=l:\bash\DateCheck\from
::введите целевую папку
set dest=l:\bash\DateCheck\To
 
for /f "tokens=1-3*" %%a in ('dir "%src%\%mask%" /a-d /-c /t:%sortkey%') do (
  if %%a==%date% (>nul move /y "%src%\%%d" "%dest%"& echo %%d)
)
pause>nul
1
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
20.02.2013, 15:59  [ТС]
Вау, круто как! Заработало))))
Огромнейшее спасибо

Добавлено через 39 минут
Ну вот, только порадовался, тут новая задача.
В общем, всё то, что делали, правильно, просто теперь после того как перенесли (я правда изменил немного, поставил не перенести, а скопировать, забыл вначале сказать об это), то эти файлы с расширением определенным, нам их все нужно переделать с расширением .arj
Это возможно сделать?
Если да, то после файл с расширением .arj нужно разархивировать, там находится ещё один архив, его тоже нужно разархивировать. То есть разархивирование нужно сделать 2 раза. Блин, запутанно как-то объяснил.
Сможете помочь? Я вообще теряюсь как это сделать...

Добавлено через 24 минуты
Да, забыл добавить, что извлеченный файл из первого архива также с расширением .arj
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.02.2013, 16:16
Можете хотя бы приблизительно обрисовать структуру файла-архива.

То как я понял:

Исходный файл: ИМЯ.какое-то расширение

1) -> копируем в Другая папка\ИМЯ.arj
2) Распаковуем ИМЯ.arj -> ... сколько тут файлов-архивов получится? - 1 или несколько - их все распаковывать. Куда, в какую папку? Такую же, как и имя архива или без создания папки?
3) Распаковуем снова...
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
20.02.2013, 16:41  [ТС]
Ну к нам приходят шифрованные файлы, называются "ИМЯ.какое-то расширение", расширение называется цифрами.
Копируем этот файл в другой каталог, меняем ему расширение в .arj, имя ему оставляем то же.
Потом разархивирываем тот скопированный и переименованный файл в ту же папку(тогда надо будет удалить первый скопированный и переименованный файл, дабы цикличность не получилась?). Там получается после разархивации 1 новый файл-архив с расширением .arj. И вот его надо ещё раз разархивировать, там разные файлы, с ними уже ничего ненужно делать
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.02.2013, 20:39
sairis123, чем удобнее распаковывать Winar или 7-Zip (7-Zip бесплатен) ?

Добавлено через 3 часа 32 минуты
Попробуйте, не проверял.

Bash
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
@echo off
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=sz*.*
::введите исходную папку
set src=l:\bash\DateCheck\from
::введите целевую папку
set dest=l:\bash\DateCheck\To
::введите полный путь к архиватору 7-zip (7za.exe, 7z.exe - без разницы)
set path7z=c:\Program Files\7-Zip\7za.exe
 
if not exist "%dest%" md "%dest%"
 
for /f "tokens=1-3*" %%a in ('dir "%src%\%mask%" /a-d /-c /t:%sortkey%') do (
  if %%a==%date% (>nul copy /y "%src%\%%d" "%dest%\*.arj"& echo %%d)
  "%path7z%" e -o"%dest%\%%~nd" -y "%dest%\%%~nd.arj"
  del /f "%dest%\%%~nd.arj"
  for %%e in ("%dest%\%%~nd\*.arj") do (
    "%path7z%" x -y "%%e"
    del /f "%%e"
  )
)
 
pause>nul
1
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
21.02.2013, 09:25  [ТС]
У нас WinRar стоит, я его прописал
Сейчас как файлы за сегодня придут, попробую тот код, который вы написали, тогда если будут проблемы отпишусь. Заранее спасибо!
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
21.02.2013, 10:43
Цитата Сообщение от sairis123 Посмотреть сообщение
У нас WinRar стоит
Установите лучше 7 Zip (лучшее сжатие, больше возможностей, бесплатный) и код не придётся переделывать.
http://forum.oszone.net/thread-237913-5.html
2
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
21.02.2013, 16:52  [ТС]
Попробовал сейчас сделать, итог такой:
Создалась папка с именем архива,но нигде никаких файлов нет Хотя вручную проверил,там всё есть... А никак не получится сделать,чтобы папка не создавалась с первоначальным именем архива?

Добавлено через 6 минут
Да,кстати, делал исходный код, установил 7 Zip
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.02.2013, 17:24
ну а команда
Bash
1
"c:\Program Files\7-Zip\7za.exe" e somefile.arj
успешно отрабатывает?

Может не смог разобрать алгоритм упаковки. Вручную 7zip открывает?
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
21.02.2013, 23:15
sairis123, попробуйте так
Bash
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
29
30
31
32
@echo off
SetLocal enabledelayedexpansion
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=sz*.*
::введите исходную папку
set src=d:\1
::введите целевую папку
set dest=d:\2\%date%
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
if not exist %dest% md %dest%
for /f "tokens=1-4 delims= " %%a in ('dir /a-d /t%sortkey% "%src%\%mask%" 2^>nul') do (
    if "%%a"=="%date%" (
    set tempdir="%dest%\%%d\1"& md !tempdir! 2>nul
    >nul copy /y "%src%\%%d" "%dest%\%%d\"
        >nul %arh% e "%dest%\%%d" -o!tempdir!&& call :1 "%dest%\%%d"&& del /q "%dest%\%%d\%%d"
 ))
pause
exit
 
:: вторая распаковка
:1
for /f "delims=" %%z in ('dir /b /a-d "%~1\1\*"') do (
>nul %arh% e "%~1\1\%%z" -o"%~1"&& rd /s /q "%~1\1"
)
GoTo :EOF
1
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
22.02.2013, 08:09  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Dragokas Посмотреть сообщение
ну а команда
Bash
1
"c:\Program Files\7-Zip\7za.exe" e somefile.arj
успешно отрабатывает?

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

Добавлено через 6 минут
sov44,
Попробовал, всё тоже хорошо получается, спасибо за помощь Только получается, что всё равно создается в нужной директории папка с первоначальным именем файла, и в ней находятся эти файлы, которые мне нужны. Просто программа такая стоит,что автоматически должна забирать эти файлы, по вложенным папкам не умеет лазить, поэтому хотелось бы, чтобы эти файлы в итоге были в той папке, в которую переносили первоначальный файл.
Возможно так сделать?
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
22.02.2013, 09:51
Цитата Сообщение от sairis123 Посмотреть сообщение
Только получается, что всё равно создается в нужной директории папка с первоначальным именем файла, и в ней находятся эти файлы, которые мне нужны.
К этому и стремился
Из сообщений довольно сложно понять, что требуется, поэтому разъясните на примере:
есть файл file дважды упакованый в arj (без расширения) в директории d:\1
в какой директории должен оказаться распакованный файл?
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
22.02.2013, 09:58  [ТС]
В директории d:\1 и должен оказаться
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
22.02.2013, 10:28
Тогда наверное так
Bash
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
29
@echo off
SetLocal enabledelayedexpansion
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=sz*.*
::введите исходную папку
set src=d:\1
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
for /f "tokens=1-4 delims= " %%a in ('dir /a-d /t%sortkey% "%src%\%mask%" 2^>nul') do (
    if "%%a"=="%date%" (
    set tempdir="%src%\TM"& md !tempdir! 2>nul
    >nul %arh% e "%src%\%%d" -o!tempdir!&& call :1 "!tempdir!"&& del /q "%src%\%%d"
 
 ))
pause
exit
 
:: вторая распаковка
:1
for /f "delims=" %%z in ('dir /b /a-d "%~1\*"') do (
>nul %arh% e "%~1\%%z" -o"%src%"&& rd /s /q "%~1"
)
GoTo :EOF
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
22.02.2013, 11:39  [ТС]
Я извнияюсь, опять неправильно обяъяснил.
В общем вот как должно быть:
1. Есть директория d:\1, мы оттуда переносим файлы, которые начинаются на sz в директорию d:\2
2. В директории d:\2 и должны в итоге оказаться распакованные файлы

Вроде правильно рассказал, извиняюсь за свою неграмотность
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
22.02.2013, 12:51
Bash
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
29
30
31
32
33
@echo off
SetLocal enabledelayedexpansion
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=sz*.*
::введите исходную папку
set src=d:\1
::введите целевую папку
set dest=d:\2
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
if not exist %dest% md %dest%
for /f "tokens=1-4 delims= " %%a in ('dir /a-d /t%sortkey% "%src%\%mask%" 2^>nul') do (
    if "%%a"=="%date%" (
        set tempdir="%dest%\1"& md !tempdir! 2>nul
        >nul copy /y "%src%\%%d" "%dest%\"
            >nul %arh% e "%dest%\%%d" -o!tempdir!&& call :1 "%dest%\1"&& del /q "%dest%\%%d"
    )
)
pause
exit
 
:: вторая распаковка
:1
for /f "delims=" %%z in ('dir /b /a-d "%~1\*"') do (
    >nul %arh% e "%~1\%%z" -o"%dest%"&& rd /s /q "%~1"
)
GoTo :EOF
1
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 9
22.02.2013, 15:22  [ТС]
Работает на все сто процентов!!!! Ребята, спасибо вам большое, буду теперь тоже изучать и писать батники, просто времени мало было, нужно было срочно
Ещё раз огромное спасибо!!!!
0
orgia
04.06.2013, 13:10
а как бы оставив идею этой же, но искать за последние 2 дня?
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
04.06.2013, 14:56
Попробуйте удалить 19 и 23 строки.

А строку 18 заменить на эту:

Bash
18
for /f "delims=" %%d in ('FORFILES /p "%src%" /M "%mask%" /d +2') do (
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.06.2013, 14:56
Помогаю со студенческими работами здесь

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

Разархивирование файлов по маске из архивов ARJ, RAR, ZIP с удалением из архива
Здравствуйте! Необходимо разархивировать файлы с определенной маской из архива в текущий каталог без создания каталога. Если в этом...

Распаковка файлов из архива
Есть удаленный сервер, на нем лежат 100 метровые архивы, в архивах 100500 мелких файлов Пробую так c:\Program Files\7-Zip>7z x...

Написать bat-файл для архивирования файлов в каталоге. Считать, что имя архива имеет расширение ARJ
Помогите с заданием. Написать bat-файл для архивирования файлов в каталоге. Считать, что имя архива имеет расширение ARJ.

Распаковка архива с заменой файлов
Здравствуйте мне нужно распаковать zip заменой файлов, я делал так: ZipFile.ExtractToDirectory(zipfile, zipfolder); но в таком...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru