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

Добавление префиксов к именам файлов и копирование файлов

07.06.2016, 12:15. Показов 9575. Ответов 24

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые, знатоки!
Столкнулся с задачей конвертации большого объема DAV файлов в AVI. Почти полгода записи камер.
Принесли внешний диск, на котором есть определенная структура папок (корень-даты-камеры-файлы). Есть утилита пакетного конвертирования из DAV в AVI. Но ей можно указать вручную только одну папку. Т.к. папок реально очень много, то каждый раз "тыкать" программу в каждую папку очень утомительно. Можно ли сделать такую автоматизацию (наверное в 2 скрипта), чтобы в корне создалась папка например "DAV" и из каждой папки с номером камеры, файлы скопировались в неё, но в имя файла добавились верхние папки, т.е. дата и номер камеры, к примеру "2016-02-18-имяфайла-006" (шестая камера к примеру), после того как я сконвертирую скопом все файлы из папки DAV и удалю их, останутся файлы AVI. И например вторым скриптом исходя из имени получившихся AVI они скопировались из папки DAV обратно в старые места (где были DAV) по датам и папкам камер, в идеале с удалением префикса даты (первого префикса), чтобы не получались слишком длинные имена.

Надеюсь не слишком запутанно написал. Просто руками я это всё по сути проделывал, но только для конкретной даты, делая групповое переименование, дописывая номер камеры и сгружая всё в папку с числом, а хочется охватить больше дат разом.
Структура папок показана на скриншотах.

Заранее спасибо за ответы!
Миниатюры
Добавление префиксов к именам файлов и копирование файлов   Добавление префиксов к именам файлов и копирование файлов   Добавление префиксов к именам файлов и копирование файлов  

0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2016, 12:15
Ответы с готовыми решениями:

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

Рекурсивное добавление префикса к именам всех файлов с некоторыми исключениями
Добрый вечер. Нужна помощь в таком вопросе: Есть рабочий каталог D:\bat с десятком подкаталогов. Нужно добавить к имени всех файлов (...

Копирование файлов по именам, извлеченным из txt
Добрый день всем. Продолжая обучения delphi наткнулся на новую проблему. Не пойму как реализовать копирование файлов с каталога....

24
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.06.2016, 16:52
По-моему решаться должно так:
Windows Batch file
1
2
3
4
@echo off
set "d=F:\1\Disk00_Part00"
for /f "delims=" %%a in ('dir/a-d/b/s "%d%\*.dav"') do утилита(dav-avi).exe "%%a" "%%~na.avi"
pause
или так:
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
set "d=F:\1\Disk00_Part00"
for /f "delims=" %%a in ('dir/ad/b/s "%d%') do (
 pushd "%%a"
  утилита(dav-avi).exe "*.dav" "*.avi"
 popd
)
pause
не знаю по какому принципу работает утилита.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
07.06.2016, 16:54  [ТС]
Утилита, к сожалению, будет запускаться все равно вручную, т.к. она не понимает вызова из командной строки. Мне главное перегнать переименованные файлы в одно место, там разом все сконвертировать и на основании имени, получившиеся AVI распихать обратно где были DAV файлы
Т.е. в любом случае, видимо, будет 3 этапа. Скрипт переименовывает, перемещает - 1. Я вручную ставлю всё на конвертацию и после удаляю DAV - 2, скрипт №2 перемещает в папки обратно, но уже AVI, при этом удалив дату (префикс в начале названия) после перемещения - 3. Если такое вообще возможно..
0
 Аватар для volodin661
6789 / 2286 / 348
Регистрация: 10.12.2013
Сообщений: 7,896
07.06.2016, 17:19
Цитата Сообщение от mejorcorreo Посмотреть сообщение
Утилита, к сожалению, будет запускаться все равно вручную, т.к. она не понимает вызова из командной строки.
единственный на всём земном шаре конвертер из DAV в AVI ?
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
07.06.2016, 17:22  [ТС]
Судя по отзывам с форумов производителя оборудования из пакетных и которые не смещают звук после конвертации - да
Но может, конечно, есть и другой пакетный. Лично я приличного решения (и бесплатного) не нашел...
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.06.2016, 17:29
Цитата Сообщение от mejorcorreo Посмотреть сообщение
Если такое вообще возможно..
Да возможно, конечно, но стало интересно, как это нельзя запустить что-то.exe из bat или если не секрет, можно озвучить name единственной утилиты?
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
07.06.2016, 17:36  [ТС]
Разумеется! Надо было сразу написать. DAV-AVI Batch File Converter 1.01 . И советуют именно 1.01 версию, т.к. она корректно работает со звуком. Если не ошибаюсь, то фирма программы - Dohua
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.06.2016, 19:31
mejorcorreo,
Попробуйте погуглить "FFmpeg".

Добавлено через 8 минут
Что-то типа
Windows Batch file
1
ffmpeg -i inputfile.dav -vcodec libx264 outputfile.mp4
надо проверять не пробовал, естественно, за ненадобностью.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
07.06.2016, 20:34  [ТС]
Увы....

Кликните здесь для просмотра всего текста
C:\Users\User\Desktop\ffmpeg-20160607-git-153ab83-win64-static\ffmpeg-20160607
-git-153ab83-win64-static\bin>ffmpeg.exe -i 12.21.48-12.31.07[M][@6e0b][0].dav -
vcodec libx264 12.21.48-12.31.07[M][@6e0b][0].mp4
ffmpeg version N-80219-g153ab83 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 44.101 / 57. 44.101
libavformat 57. 37.101 / 57. 37.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.101 / 6. 46.101
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
12.21.48-12.31.07[M][@6e0b][0].dav: Invalid data found when processing input
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.06.2016, 22:58
Цитата Сообщение от mejorcorreo Посмотреть сообщение
Увы....
Не верю, и берите пути в кавычки, вот специально скачал и попробовал, все получается:
Windows Batch file
1
2
3
@echo on
"%Userprofile%\Desktop\ffmpeg-20160607-git-153ab83-win32-static\ffmpeg-20160607-git-153ab83-win32-static\bin\ffmpeg.exe" -i "%Userprofile%\Desktop\Файл 00013.avi" "file.mpg"
pause
.

Добавлено через 1 минуту
Тем более и символы разные в имени, кавычки обязательно!
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
08.06.2016, 13:19  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
Тем более и символы разные в имени, кавычки обязательно!
Да, вы правы, кавычек не было. Пути взял в ковычки. Даже попробовал в корень диска всё вынести. Все равно такая же ошибка. AVI файл конвертируется, DAV файл нет. Может дело в ключах, конечно.. Попробую завтра, на свежую голову, но кавычки не спасли.
В любом случае спасибо большое!

Добавлено через 13 часов 12 минут
В общем пробовал по-всякому - ничего не выходит. Одна и та же ошибка. При этом утилита конвертирует файл нормально.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
08.06.2016, 14:31
Тогда, если гора не идет к Магомету..., :
Windows Batch file
1
2
3
4
5
@echo off
set "d=F:\1\Disk00_Part00"
for /f "delims=" %%a in ('dir/a-d/b/s "%d%\*.dav"') do set "p=%%~dpa"
copy/y "Путь\утилита" "%p%"
exit/b
утилита ведь автономная? Проще ее таскать по папкам, чем кучу файлов.
Для примера сделал на одной, если в каждую папку утилиту копировать надо доработать, но устроит ли так?
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
08.06.2016, 14:43  [ТС]
Этим скриптом раскопируется утилита по всем папкам в Disk00_Part00 ?
Скопируются все файлы из папки утилиты? Т.к. она без своих DLLок рядом не работает.

Заранее спасибо за ответ!

Добавлено через 7 минут
Понял вас. А тогда смысл весь теряется, т.к. я до этого запускал утилиту и указывал ей папку. Времени это точно не сэкономит. Разница в том, чтобы заходить в каждую папку и запускать утилиту и указывать ей ту же папку
А хотел именно собрать все файлы и одним махом все сконвертировать. Только потом распихать в нужные места))
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
08.06.2016, 14:45
В примере только в последнюю папку (на всякий случай). Скопировать можно и всю папку с утилитой с помощью xcopy или копировать со всей требухой, согласен, костыльно, но я тоже никакой альтернативы вашей утилите не нашел, кроме того что выше, скиньте в архиве пару *.dav, именно с родными именами, может в другом чем подвох.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
08.06.2016, 14:57  [ТС]
Сейчас скину парочку. Переименовывать пробовал, не помогает. Вообще странный этот формат DAV. У кого-то DAV конвертируется ffmeg-ом, а кого-то (типа меня) нет. Почитав забугорные форумы понял, что DAV DAV'у рознь.
Вложения
Тип файла: rar Desktop.rar (5.09 Мб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
28.06.2016, 11:39  [ТС]
Кое как вручную всё сделал
Осталась теперь другая сторона вопроса.
Можно ли автоматизировать перемещение файлов в папку по суффиксу файла.
Т.е. теперь есть корень месяца, есть папки с датами и в этих папках есть подпапки 001, 006, 008 и там в же в папке с датами лежат файлы в именах которых в конце есть соответственно -001, -006, -008. Можно ли автоматизировать перемещение этих файлов в свои папки, исходя из суффикса имени.

Заранее благодарю за ответы
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
28.06.2016, 11:45  [ТС]
UPD

Для наглядности выложил структуру
Миниатюры
Добавление префиксов к именам файлов и копирование файлов  
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
29.06.2016, 10:07  [ТС]
"Наваял" сам такой BAT файл:
Windows Batch file
1
2
3
4
5
@echo off
 
for /R %%a in (*-008.avi) do move %%a 008
for /R %%b in (*-006.avi) do move %%b 006
for /R %%c in (*-001.avi) do move %%c 001
Прекрасно перемещает файлы в папки на этом же уровне (хотя скорее всего это делается элегантнее, но я пока чайник в этом ).
Но работает только в той папке где запущен. В данном случае в папке с датой. Можно ли сделать как-то рекурсивно, чтобы запустить BAT из папки месяца, а он пробежался по всем датам и уже распихал внутри дат по папкам?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.06.2016, 12:04
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
:: формат файла 2016-02-18-имяфайла-006
@echo off
:: здесь указать корневую директорию либо локацию батника: %~dp0
pushd "d:\test" 
setlocal enabledelayedexpansion
for %%i in (*.dav) do (
  set "basename=%%~ni"
  set "fullname=%%i"
  set folderTop=!basename:~0,10!
  set folderDown=!basename:~-3! 
  2>nul mkdir !folderTop!\!folderDown!
  echo %%i !folderTop!\!folderDown!
  1>nul move !fullname! !folderTop!\!folderDown!
)
pause
Копирует в гггг-мм-дд\XXX из корневой папки по отношению к папкам вида гггг-мм-дд.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 24
29.06.2016, 12:10  [ТС]
Спасибо за ответ!

Указал директорию, запустил батник, ничего не происходит. Просто "Для продолжения нажмите любую клавишу . . ."
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2016, 12:10
Помогаю со студенческими работами здесь

Распределение файлов в папках по подпапкам с именами, соответствующими именам этих файлов
Распределение файлов в папках по подпапкам с названием подпапок как файл. например в папке 0005 лежит файл 3.pdf и tam.pdf нужно в...

Как найти названия файлов в текстовом файле, а потом осуществить поиск в папке файлов по этим именам?
Здравствуйте. Подскажите, пожалуйста. У меня есть текстовый файл, где находятся имена файлов и есть папка, где много всяких файлов, в том...

Переименование файлов в папках с добавлением к именам этих файлов имён этих папок
Есть 4 папки с архивом записей с камеры видеонаблюдения с именами 13 14 15 16. В каждой папке находится 60 минутных файлов в формате...

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

Сортировка файлов в папке по именам
Нашел пример отсортировать файлы в папке по времени и затем вывести на эран, работает пример. http://f9r.ru/sortarrrrr.html А как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта 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. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru