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

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

20.02.2013, 13:37. Показов 16439. Ответов 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
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
05.06.2013, 16:23
Студворк — интернет-сервис помощи студентам
Здравствуйте. можете подсказать?
Стоит аналогичная задача, с некоторыми ньюансами:
исходная директория архива - D:\1C_File_base\BF_Daily_Copy
распаковать в папку - D:\1C_File_base\2-script
архивы в исходной папке однотипные и создаются каждую ночь в 1.00
Формат имени архива - Задание_1_2013-06-04 11-38 (соответственно время будет другое - ночное)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.06.2013, 16:35
А в чем вопрос? Распаковывать только архивы созданные между 01.00 и 02.00?
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
05.06.2013, 16:44
В принципе распаковать архив по дате которая будет на момент распаковки

сегодня 5 июня, значит надо распаковать архив созданный 5 июня. он будет один с этой датой
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.06.2013, 16:59
У Вас строка для поиска будет иметь вид:
Bash
1
for /f "delims=" %%d in ('dir /B /A-D "%src%\%mask%" ^| find "%date:~6,4%-%date:~3,2%-%date:~0,2%"') do (
Не забудьте удалить строки 19 и 23.
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
24.06.2013, 11:28
Цитата Сообщение от Dragokas Посмотреть сообщение
У Вас строка для поиска будет иметь вид:
Bash
1
for /f "delims=" %%d in ('dir /B /A-D "%src%\%mask%" ^| find "%date:~6,4%-%date:~3,2%-%date:~0,2%"') do (
Не забудьте удалить строки 19 и 23.
Здравствуйте, дошли руки до проверки скрипта.

скрипт не производит ни каких действий...
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 src=D:\1C_File_base\BF_Daily_Copy
::введите целевую папку
set dest=D:\1C_File_base\2-script
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
if not exist %dest% md %dest%
 
    
 
for /f "delims=" %%d in ('dir /B /A-D "%src%\%mask%" ^| find "%date:~6,4%-%date:~3,2%-%date:~0,2%"') do (
        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
Поможете советом?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.06.2013, 12:52
Пробел между -o"%dest%"
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
24.06.2013, 15:44
Цитата Сообщение от FraidZZ Посмотреть сообщение
Пробел между -o"%dest%"
Пробел ставил, не помогает.
пробовал -o "%dest%"
и перед -o и после %" - не получается.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.06.2013, 18:18
-o!tempdir! - тоже пробел.
В начале кода поставьте echo on и запустите с выводом в файл. Посмотрим.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.06.2013, 18:45
@FraidZZ, у 7zet-a вроде такой и есть синтаксис.

@LbISbIi, выполните это Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает".
Посмотрим, что у Вас там.
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
25.06.2013, 14:20
Вот лог

D:\Script>SetLocal enabledelayedexpansion

D:\Script>set sortkey=c

D:\Script>set src=D:\1C_File_base\BF_Daily_Copy

D:\Script>set dest=D:\1C_File_base\2-script

D:\Script>set arh="c:\Program Files\7-Zip\7z.exe"

D:\Script>if not exist D:\1C_File_base\2-script md D:\1C_File_base\2-script

D:\Script>for /F "delims=" %d in ('dir /B /A-D "D:\1C_File_base\BF_Daily_Copy\" | find "2013-06-25"') do (set tempdir="D:\1C_File_base\2-script\1" & md !tempdir! 2>nul
copy /y "D:\1C_File_base\BF_Daily_Copy\%d" "D:\1C_File_base\2-script\" 1>nul
"c:\Program Files\7-Zip\7z.exe" e "D:\1C_File_base\2-script\%d" -o!tempdir! 1>nul && call :1 "D:\1C_File_base\2-script\1" && del /q "D:\1C_File_base\2-script\%d" )

D:\Script>pause
„«п Їа®¤®«¦Ґ*Ёп **¦¬ЁвҐ «оЎго Є«*ўЁиг . . .
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
25.06.2013, 14:37
Строка цикла есть, подстановок нет. Значит, (dir /B /A-D "D:\1C_File_base\BF_Daily_Copy\" | find "2013-06-25") не выдает строк. Проверьте эту же команду отдельно.
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
25.06.2013, 14:40
это как? отдельно? вывести в отдельный батник?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
25.06.2013, 15:42
можно и так. Можно из cmd с той же текущей папкой.
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
25.06.2013, 17:14
Что-то я не догнал...
Киньте строки которые надо в батнике проверить
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.06.2013, 20:13
Bash
1
dir /B /A-D "D:\1C_File_base\BF_Daily_Copy\"
Bash
1
dir /B /A-D "D:\1C_File_base\BF_Daily_Copy\" | find "2013-06-25"
Можно из-под интерпретатора. Как его запустить? Написано здесь (вариант 2): Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
27.06.2013, 16:34
Вывод команды из командной строки:
Bash
1
2
3
4
5
C:\Users\Администратор>dir /B /A-D "D:\1C_File_base\BF_Daily_Copy\" | find "2013
-06-25"
copy1.11 2013-06-25 11;50;57 (______).zip
 
C:\Users\Администратор>
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
01.07.2013, 12:38
Скрипт в данной форме отработал
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
@echo on
SetLocal enabledelayedexpansion
::Введите ключ условий поиска даты:
::w (write) - по дате модификации
::c (create) - по дате создания
set sortkey=c
::введите маску для искомых файлов
set mask=BaltFarm*.*
::введите исходную папку
set src=D:\1C_File_base\BF_Daily_Copy
::введите целевую папку
set dest=D:\1C_File_base\2-script
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
if not exist %dest% md %dest%
for /f "delims=" %%d in ('dir /B /A-D "%src%\%mask%" ^| find "%date:~6,4%-%date:~3,2%-%date:~0,2%"') do (
   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" в "1CBalt"?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
01.07.2013, 22:13
В строке 29, кажется, ошибка: удаление всех файлов вместе с каталогом, когда еще не все архивы распакованы ?
Попробуйте 29-30 строки заменить на:
Bash
1
2
3
    >nul %arh% e "%~1\%%z" -o"%dest%"&& del /q "%~1\%%z"
) 
move "%~1" "1CBalt"
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
03.07.2013, 11:53
Цитата Сообщение от Dragokas Посмотреть сообщение
В строке 29, кажется, ошибка: удаление всех файлов вместе с каталогом, когда еще не все архивы распакованы ?
Попробуйте 29-30 строки заменить на:
Bash
1
2
3
    >nul %arh% e "%~1\%%z" -o"%dest%"&& del /q "%~1\%%z"
) 
move "%~1" "1CBalt"
Спасибо, вроде все получилось, буду тестировать на реальных документах.
0
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 14
09.07.2013, 10:07
И снова здравствуйте.
Имеем батник:
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=BaltFarm*.*
::введите исходную папку
set src=D:\1C_File_base\BF_Daily_Copy
::введите целевую папку
set dest=D:\1C_File_base\1CArchive
::введите директорию установки 7z
set arh="c:\Program Files\7-Zip\7z.exe"
 
:: отбор файлов и первая распаковка
if not exist %dest% md %dest%
for /f "delims=" %%d in ('dir /B /A-D "%src%\%mask%" ^| find "%date:~6,4%-%date:~3,2%-%date:~0,2%"') do (
   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%"&& del /q "%~1\%%z"
) 
move "%~1" "1CBalt"
GoTo :EOF
Запуская его из под пользователя (в админскими правами) все проходит нормально.
Поставив батник в планировщик наблюдаются глюки, а именно:
создается папка "1", в которой появляется разархивированная копия нужного архива; но папка "1" не переименовывается и оригинал архива не удаляется.
Такое чувство, что батник останавливает работу на 24 - 25 строке и закрывается...
Правильно ли это и можно ли исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2013, 10:07
Помогаю со студенческими работами здесь

Извлечение из архива .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); но в таком...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
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