Автоматизированная работа с большим кол-вом контейнеров и аудио дорожек при помощи .bat скриптов [Инструкция]

Страницы :   Пред.  1, 2, 3 ... 14, 15, 16

Ответить
Автор
Сообщение

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 20-Ноя-16 19:56 (1 год 9 месяцев назад, ред. 20-Ноя-16 20:14)

[Цитировать] 

Dtd8N
Ога, переход в по локальной сети невозможен. Честно говоря, я никогда с такой необходимостью не сталкивался, и хз как тут быть.
Соорри, во втором варианте ошибка. Должен быть модификатор. Вот как так: eac3to "%%~fi" 2: "K:\out\%%~ni".wav
В третьем варианте следует оствавить только имя eac3to "%%i" 2: "K:\out\%%~ni".wav
[Профиль]  [ЛС] 

Dtd8N

Стаж: 1 год 9 месяцев

Сообщений: 177


Dtd8N · 20-Ноя-16 20:02 (спустя 6 мин., ред. 20-Ноя-16 20:06)

[Цитировать] 

Pergydrol писал(а):
71866021Dtd8N
Ога, переход в по локальной сети невозможен. Честно говоря, я никогда с такой необходимостью не сталкивался, и хз как тут быть.
Соорри, во втором варианте ошибка. Должен быть модификатор. Вот так: eac3to "%%~fi" 2: "K:\out\%%~fi".wav
доступ по сети нужен когда в локалке сервер )
попробовал исправить 2ой вариант
for /f "usebackq delims=?" %%i IN (`dir "\\Server\e\in\""*.mkv" /a /o:n /n /c /b`) DO (
"G:\eac\eac3to.exe" "%%~fi" 2: "L:\out\%%~fi".wav
)
выдает
Source file "L:\out\S08E06.mkv" not found. не понимаю только при чем тут Source file если папка выходная
3ий вариант кстати почти работает, доступ к файлу есть, только с выходным путем траблы)
то есть фактически нужно как то взять не весь путь файла, а именно имя входного файла, тогда будет работать
OR /R "\\Server\e\in\" %%i IN (*.mkv) DO (
"G:\eac\eac3to.exe" "%%i" 2: "L:\out\%%i".wav)
The destination file "L:\out\\\Server\e\in\S07E01.mkv.wav" could not be created.
[Профиль]  [ЛС] 

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 20-Ноя-16 20:03 (спустя 1 мин.)

[Цитировать] 

Dtd8N
Обновил пост
В третьем варианте следует оствавить только имя eac3to "%%i" 2: "K:\out\%%~ni".wav
[Профиль]  [ЛС] 

Dtd8N

Стаж: 1 год 9 месяцев

Сообщений: 177


Dtd8N · 20-Ноя-16 20:11 (спустя 7 мин., ред. 20-Ноя-16 20:11)

[Цитировать] 

Pergydrol писал(а):
71866121Dtd8N
Обновил пост
В третьем варианте следует оствавить только имя eac3to "%%i" 2: "K:\out\%%~ni".wav
заработало)))
думаю можно этот код вставить в инструкцию на 1ой странице,
так как очень универсален, даже по локалке работает
Цитата:
FOR /R "\\Server\e\InputDIR\" %%i IN (*.mkv) DO (
"G:\eac\eac3to.exe" "%%i" 2: "L:\OutputDIR\%%~ni".wav)
универсальные решения лучше частных )
[Профиль]  [ЛС] 

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 20-Ноя-16 21:04 (спустя 53 мин., ред. 20-Ноя-16 21:04)

[Цитировать] 

Век живи - век учись. Оказывается, для второго варианта модификатор ~f бесполезен (ну или специфичен), так как он подставляет в полное имя файла рабочую папку батника. Почему так, хотел бы я знать.
UPD: Хах, потому что for уже работает со строками вывода команды dir, а не о оригинальными переменными файлов. Да, вариант с dir позволяет гибче произвести выборку и поиск, но к результату модификаторы неприминимы. Вернее, применимы, но только если текущая рабочая папка совпадает той, что указана в dir
UPD2: Но если заставить dir искать и в подкаталогах, то модификаторы все равно работаеют.
[Профиль]  [ЛС] 

PikachuUA

Стаж: 3 года 3 месяца

Сообщений: 5


PikachuUA · 25-Дек-16 15:19 (спустя 1 месяц 4 дня)

[Цитировать] 

Напишите пожалуйста параметры для склейки двух mkv.
[Профиль]  [ЛС] 

TRAY_MAX

Стаж: 9 лет 6 месяцев

Сообщений: 865

TRAY_MAX · 09-Фев-17 21:43 (спустя 1 месяц 15 дней)

[Цитировать] 

подскажите, как сделать проверку перед удалением, надо если флак не существует то не удалял оригинал , если есть - удалялся оригинальные файлы
скрытый текст
Код:
@echo off
chcp 1251
title=Создание АудиоАрхива в FLAC формате
echo "Декодирую Mpeg Audio Layer 3 в WAVE 48kHZ, если таковы файлы найдутся "
set muxer="d:\ProgrammMMS\VideoToolnix MaxiSoftware\Toolnix\ffmpeg\bin\ffmpeg.exe"
set Inp=-i "%%A"
set ParMux=-acodec pcm_s16le -ar 48000
set Out="%%~nA.wav"
FOR /r %%A IN (*.mp3) DO (
echo "Декодирую файл:"%%A"" >>LogFiles.txt
%muxer% %Inp% %ParMux% %out% 2>>FlacEnclog.txt)
echo "Кодирование всех в Flac"
set flac="d:\ProgrammMMS\VideoToolnix MaxiSoftware\AudioEnc\flac\win64\flac.exe"
set Audio="%%A"
set Parx=-8
FOR /r %%A IN ("*.wav") DO (
echo "Упаковка файл:"%%A"" >>LogFiles.txt
%flac% %Parx% %Audio% 2>>FlacEnclog.txt)
echo "Удаление временных и оригинальных файлов"
FOR /r %F IN ("*.mp3") DO (del "%F")
FOR /r %F IN ("*.wav") DO (del "%F")
[Профиль]  [ЛС] 

Tracker35

Стаж: 9 лет 10 месяцев

Сообщений: 725

Tracker35 · 10-Фев-17 21:26 (спустя 23 часа, ред. 10-Фев-17 21:26)

[Цитировать] 

TRAY_MAX
if exist "flac" del /q "wav"
[Профиль]  [ЛС] 

TRAY_MAX

Стаж: 9 лет 6 месяцев

Сообщений: 865

TRAY_MAX · 10-Фев-17 23:27 (спустя 2 часа 1 мин.)

[Цитировать] 

Tracker35
что-то не могу понять как применить строку, пожалуйста распишите полностью код
[Профиль]  [ЛС] 

TRAY_MAX

Стаж: 9 лет 6 месяцев

Сообщений: 865

TRAY_MAX · 07-Мар-17 17:37 (спустя 24 дня)

[Цитировать] 

прощу помощи тут... задача такая - получить из аудиофайлов нужную информацию - кодек, частота дискретизации, и битность, сохранить в текстовом файле с относительными путями.
пример
1.вав
вав, 48кгц, 24бит
21\21.флак
флак 48кгц 16бит
23\43\45.мп3
мп3 44,1кгц 16бит
даже не знаю как это реализовать.
[Профиль]  [ЛС] 

miha2154

Стаж: 10 лет 2 месяца

Сообщений: 9148

miha2154 · 07-Мар-17 17:47 (спустя 9 мин.)

[Цитировать] 

Код:
FOR %i IN (*.*) DO (eac3to "%i" -check)
не то?
[Профиль]  [ЛС] 

TRAY_MAX

Стаж: 9 лет 6 месяцев

Сообщений: 865

TRAY_MAX · 07-Мар-17 21:19 (спустя 3 часа)

[Цитировать] 

miha2154
к сожалению немного не то, еак3то каждому файлу пишет свой лог файл , а мне бы хотелось в один файл , по выше указанному формату.
[Профиль]  [ЛС] 

nick23100

Стаж: 8 лет 9 месяцев

Сообщений: 41

nick23100 · 16-Мар-17 15:18 (спустя 8 дней, ред. 18-Мар-17 09:11)

[Цитировать] 

Когда исходное расширение совпадает с конечным, то простейший скрипт
Код:
for %%f in (*.mka) do "mkvmerge.exe" -o "%%~nf(rus).mka"  "--language" "0:rus" "%%f"
работает на NTFS разделе, а на exFAT разделе - начинается бесконечное дублирование файлов.
Можно ли как-то переделать скрипт, чтобы избежать зацикливания на exFAT?
Нашел простое решение - кодировать в папку "rus":
Код:
for %%f in (*.mka) do "mkvmerge.exe" -o "%%~dpf\rus\%%~nf.mka"  "--language" "0:rus" "%%f"
Еще одно не особо оптимальное решение:
скрытый текст
Можно проверять файлы на появление первого двойного кодирования командой:
Код:
if exist "*(rus)(rus).mka" goto go
:go
Также добавить удаление лишнего файла перед выходом
Код:
if exist "*(rus)(rus).mka" del "*(rus)(rus).mka"
Не получается сделать скрипт, чтобы отрезать от текущего имени 5 символов, добавить "(rus).mka" и проверить наличие данного файла или совпадение имени с текущим.
DeadNews предложил использовать батник для выделенных файлов в тотал коммандере(немного сократил):
Код:
@echo off
FOR %%j IN (%*) DO (mkvmerge -o "%%~dpnj(rus).mka" --language "0:rus" ^( %%j ^)  )
pause
exit
Соответственно к кнопке в тотал коммандере добавить параметр:
Код:
%P%S
Данный вариант тоже работает.
Вопрос можно считать закрытым.
[Профиль]  [ЛС] 

HortonEN

Стаж: 10 лет 8 месяцев

Сообщений: 7855


HortonEN · 17-Мар-17 13:02 (спустя 21 час)

[Цитировать] 

TRAY_MAX
Код:
@ECHO OFF
FOR /R %%G IN (*.wav *.flac) DO (
ECHO %%G
C:\Programs\mediainfo\MediaInfoCL --Inform="Audio;%%Format%% - %%SamplingRate/String%% - %%BitDepth/String%%\n" "%%G" )
ECHO "All Done"
[Профиль]  [ЛС] 

Harry Palmer

Top Seed 02* 80r

Стаж: 10 лет 4 месяца

Сообщений: 1262

Harry Palmer · 05-Июл-17 14:55 (спустя 3 месяца 19 дней, ред. 06-Июл-17 10:34)

[Цитировать] 

del
[Профиль]  [ЛС] 

Vidocqq

Стаж: 10 лет 9 месяцев

Сообщений: 36


Vidocqq · 09-Сен-17 12:15 (спустя 2 месяца 3 дня)

[Цитировать] 

Помогите разобраться.
Нашёл инструкцию и батник в сети по пакетной конвертации с помощью mkvmerge ( https://www.youtube.com/watch?v=LnajAOguCa0 ).
Попробовал поэкспериментировать - но батник не работает нормально. все делалось по инструкции. В батнике не происходит смены нумерации в файлах, т.е. не меняется переменная "number" в названии файлов.
Прикладываю батник подправленный под свой эксперимент - удаляются звук дорожка, субтитры и добавляется другая зв дорожка.
скрытый текст
rem @echo off
rem данный батник в кодировке 866
set mkvmergePath="h:\Program Files Portable\MKVToolNix\mkvmerge.exe"
set cntStart=1
set cntEnd=50
set number=
set addZero=1
setlocal enabledelayedexpansion
for /l %%i in (%cntStart%,1,=%cntEnd%) do (
rem echo %%i
if %%i LSS 10 (
if %addZero% EQU 1 (
set number=0%%i
) else (
set number=%%i
)
) else (
set number=%%i
)
rem echo number: !number!
%mkvmergePath% -o "H:/Program Files Portable/MKVToolNix\mkvmerge.exe" --ui-language ru --output ^"C:\Users\Adm\Videos\Shijou Saikyou no Deshi Kenichi - 01.mkv^" --no-audio --no-subtitles --cropping 0:2,0,1,0 --language 0:jpn --track-name ^"0:Kenichi - 01^" --default-track 0:yes ^"^(^" ^"K:\Anime\Shijou Saikyou no Deshi Kenichi\Kenichi - 01.mkv^" ^"^)^" --language 0:rus --default-track 0:yes --compression 0:none ^"^(^" ^"K:\Anime\Shijou Saikyou no Deshi Kenichi\Kenichi - 01.mp3^" ^"^)^" --track-order 0:0,1:0
)
pause
exit /b
[Профиль]  [ЛС] 

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 24-Янв-18 18:09 (спустя 4 месяца 15 дней, ред. 24-Янв-18 18:09)

[Цитировать] 

Новый вариант батника для работ с именами файлов и пакетной обработке mkvmerge
Запускать через ярлык:
Объект: C:\Windows\System32\cmd.exe /v:on /c call "Unitar.bat"
Рабочая папка: оставить пустой
Шрифт: Lucida Console
скрытый текст
Код:
rem -------------------------------------------------------
@echo off
chcp 1251
title Работа с именами упорядоченных файлов
cls
SET menu=A
goto sel
rem -------------------------------------------------------
rem ============== Вывод основного меню
:menA
SET menu=A
cls
@echo.
@echo   Работа с именами упорядоченных файлов (от 00 до 99)
@echo ____________________________________________________________________________
@echo   0 - Перейти в другой каталог
@echo   1 - Переименовать и пронумеровать имена целиком
@echo   2 - Переименовать и пронумеровать имена,
@echo       заменив заданное число символов в начале имени
@echo   3 - Выполнение bat-файла для группы пронумерованных файлов
@echo   4 - Уравнять имена файлов с разными расширениями
@echo   5 - Дописать символы в конец имени до расширения
@echo   6 - Дописать символы в начало имени
@echo   7 - Удалить последние символы
@echo   8 - Удалить первые символы
@echo   9 -    -= ВЫХОД =-
@echo  10 - Сохранить имена файлов в текстовом документе
@echo  11 - Восстановить имена файлов из текстового документа
@echo  12 - Дополнительные операции: безопасное опробование операций,
@echo       БОЛЬШЕ 99, по сетам, замена символов, поиск посторов и т.д.)
@echo ____________________________________________________________________________
@echo "Внимание^!^!^!"
@echo Нельзя использовать символы: "\", "^/", "^:", "^*", "^?", "^<", "^>", "^|","^!"
@echo Этим, а также символам ( и ) при ручном вводе должен предшествовать Знак "^"
@echo Будьте внимательны
@echo.
@echo Текущий каталог:
cd
@echo.
goto :EOF
rem =====================================================
rem ===================Вывод дополнительного меню
:menB
SET menu=B
cls
@echo  Дополнительные операции
@echo ____________________________________________________________________________
@echo   0 - Перейти в каталог
@echo   1 - Опробование операций: тренировка на тестовых файлах, 12 штук
@echo   2 - Опробование операций:
@echo       Тренировка на тестовых файлах до 999 штук, скрипт, файл замен.
@echo   3 - Разместить файлы в папках по сетам
@echo   4 - Разместить файлы в папках по сотне в каждой
@echo   5 - Земенить символы в именах файлов (например, пробел на "_")
@echo   6 - Сохранить имена с расш. в txt, заменив набор заданных символов
@echo   7 - Сохранить имена файлов с расширением в txt
@echo   8 - Восстановить имена файлов с рас. из txt
@echo   9 -    -= ВОЗВРАТ =-
@echo  10 - Удалить файлы по маске
@echo  11 - Переместить файлы, выбранные по маске
@echo ____________________________________________________________________________
@echo.
@echo Текущий каталог:
cd
@echo.
goto :EOF
rem =====================================================
rem -------------------------------------------------------
rem -------------- Выбор операции
:sel
if "!menu!" == "A" (
call :menA
SET var=
SET /P var=Введите номер операции:
if "!var!" == "0" (cls & call :newFold & goto sel)
if "!var!" == "1" (cls & call :allRen & goto sel)
if "!var!" == "2" (cls & call :homRen & goto sel)
if "!var!" == "3" (cls & call :run & goto sel)
if "!var!" == "4" (cls & call :renren & goto sel)
if "!var!" == "5" (cls & call :insEnd & goto sel)
if "!var!" == "6" (cls & call :insHom & goto sel)
if "!var!" == "7" (cls & call :delEnd & goto sel)
if "!var!" == "8" (cls & call :delHom & goto sel)
if "!var!" == "9" (EXIT)
if "!var!" == "10" (cls & call :save & goto sel)
if "!var!" == "11" (cls & call :recov & goto sel)
if "!var!" == "12" (cls & call :menB & goto sel)
)
if "!menu!" == "B" (
call :menB
SET var=
SET /P var=Введите номер операции:
if "!var!" == "0" (cls & call :newFold & goto sel)
if "!var!" == "1" (cls & call :test & goto sel)
if "!var!" == "2" (cls & call :testB & goto sel)
if "!var!" == "3" (cls & call :toset & goto sel)
if "!var!" == "4" (cls & call :sto & goto sel)
if "!var!" == "5" (cls & call :replnam & goto sel)
if "!var!" == "6" (cls & call :repl & goto sel)
if "!var!" == "7" (cls & call :saveB & goto sel)
if "!var!" == "8" (cls & call :recovB & goto sel)
if "!var!" == "9" (cls & call :menA & goto sel)
if "!var!" == "10" (cls & call :fdel & goto sel)
if "!var!" == "11" (cls & call :fmov & goto sel)
)
if not "!var!" == "" (
@echo.
@echo Неверный номер операции
@echo.
pause
)
goto sel
rem ----------------------------------------
rem ============ Выполнение bat-скрипта для типовых пронумерованных файлов
:run
@echo.
@echo  Выполнение bat-скрипта для типовых пронумерованных файлов
@echo.
@echo Эта операция может потребоваться для того, чтобы применить команду,
@echo сформированную для одного файла на все однотипно названные файлы .
@echo.
@echo Данная операция ищет набор указанных символов, включающих порядковый
@echo номер файла, в .bat, заменяет номер на следующий по порядку
@echo и снова запускает выполнение .bat
@echo.
@echo Например, при работе с MKVtoolnix, вы можете скопировать сформированную команду
@echo в буфер обмена, сохранить ее в блокноте в .bat
@echo и воспользоватсья данной операцией,
@echo чтобы переразбить другие файлы автоматически, вместо того,
@echo чтобы формировать очередь на переразбивку файлов вручную в MKVtoolnix
@echo.
pause
cls
@echo.
@echo  Выполнение bat-скрипта для типовых пронумерованных файлов
@echo.
@echo Требуется bat-файл, содержищий одну команду для одного файла.
@echo.
@echo Команда должна быть записана в одну строку
@echo     и не содержать символов возврата коретки.
@echo Следует помнить, что блокнот отображает строку более чем в 1024 символов
@echo в виде нескольцих строк, даже если не включен режим переноса по строкам.
@echo.
@echo обрабатываемые файлы не должны содержать запрещенных символов.
@echo.
@echo Имена всех файлов, которые будут последовательно обрабатываться должны
@echo различаться только номером от 00 до 99.
@echo.
@echo Введите имя bat-файла, содержащего команду, например [[command.bat :
set /P COMM=
IF NOT DEFINED COMM (
  @echo Значение не введено
  call :end & goto :EOF
)
IF NOT EXIST %COMM% (
  @echo Файл не найден
  call :end & goto :EOF
)
@echo.
@echo Введите номер файла, который используется в bat, он будет первым:
set /P NUM1=
IF NOT DEFINED NUM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NUM1% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
IF /I !NUM1! LSS 10 (
  SET NEM2=0!NUM1!
) ELSE (
  SET NEM2=!NUM1!
)
@echo.
@echo Введите номер последнего обрабатываемого файла:
set /P NUM2=
IF NOT DEFINED NUM2 (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NUM2% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
IF /I NOT %NUM2% GEQ %NUM1% (
  @echo.
  @echo Номер первого больше номера последнего
  call :end & goto :EOF
)
@echo.
@echo Введите часть символов имени до номера и после него. Символы должны однозначно
@echo определять положение номера в имени файла.
@echo Например, если имя "Examp_S1_EP01_[720]", то укажите "EP" до и "_[" после
@echo.
@echo до:
set /P CHAR1=
@echo.
@echo после:
set /P CHAR2=
@echo.
@echo Проверьте правильность введенного.
@echo Если что-то пошло не так, нажмите "Ctrl+Pause" для остановки.
@echo.
@echo Выполнить команду %COMM% для %NUM2% файлов [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка:
@echo.
:runloop
rem Выполнить скрипт
@echo.
@echo Текущий номер файла: !NUM1!
@echo Вызываю скрипт:
@echo on
call %COMM%
@echo off
rem Инкремент номера файла
set /a NUM1=!NUM1!+1
rem Проверить номер
IF /i !NUM1! GTR !NUM2! (call :end & goto :EOF)
rem Если номер верен, то
rem Сохранить текущий имя-номер для поиска
SET NEM1=!NEM2!
rem Состряпать новый имя-номер
IF /I !NUM1! LSS 10 (
  SET NEM2=0!NUM1!
) ELSE (
  SET NEM2=!NUM1!
)
for /F "delims=?" %%i in (%COMM%) do (
  set REN=%%i
  @echo !REN:%CHAR1%%NEM1%%CHAR2%=%CHAR1%%NEM2%%CHAR2%!>%COMM%
)
goto runloop
call :end
goto :EOF
rem =====================================================
rem ============ Переименовать и пронумеровать, заменив заданное число символов в начале имени
:homRen
@echo.
@echo Переименовать и пронумеровать, заменив заданное число символов в начале имени
@echo.
@echo Переименовываемые файлы не должны содеражать символов "^!" и "^^"
@echo При необходимости использовать символы "^!", "^^", "^&"
@echo им должен предшествовать символ "^"
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите новое имя до номера:
set /P NEM1=
@echo Введите новое имя после номера:
set /P NEM2=
@echo Введите первый номер:
set /P NEMER=
IF NOT DEFINED NEMER (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NEMER% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
@echo Введите кол-во заменяемых символов:
set /P KOLWO=
IF NOT DEFINED KOLWO (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Переименовать в %NEM1%[nn]%NEM2%[%KOLWO%-name].%RAS% [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка:
@echo.
set YENO=n
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  if /I !NEMER! GTR 99 (
   if NOT !YENO!==y (
    @echo.
    @echo Номер файла превысил 99. Продолжить нумеровать со 100 [y/n]
    set /P YENO=
    if NOT !YENO!==y (call :end & goto :EOF)
   )
  )
  IF /I !NEMER! LSS 10 (
   SET REN=%%~ni
   SET REN=!REN:~%KOLWO%!
   ren "%%i" "%NEM1%0!NEMER!%NEM2%!REN!.%RAS%"
  ) ELSE (
   SET REN=%%~ni
   SET REN=!REN:~%KOLWO%!
   ren "%%i" "%NEM1%!NEMER!%NEM2%!REN!.%RAS%"
  )
  @echo !NEMER! = %%~ni
  set /a NEMER=!NEMER!+1
)
call :end
goto :EOF
rem =====================================================
rem ============ Переименовать и пронумеровать имена целиком (от 00 до 99)
:allRen
@echo.
@echo Переименовать и пронумеровать имена целиком (от 00 до 99)
@echo.
@echo Переименовываемые файлы не должны содеражать символов "^!" и "^^"
@echo При необходимости использовать символы "^!", "^^", "^&"
@echo им должен предшествовать символ "^"
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите новое имя до номера:
set /P NEM1=
@echo Введите новое имя после номера:
set /P NEM2=
@echo Введите первый номер:
set /P NEMER=
IF NOT DEFINED NEMER (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NEMER% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
@echo.
@echo Переименовать в %NEM1%[nn]%NEM2%.%RAS% [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
set YENO=n
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  if /I !NEMER! GTR 99 (
   if NOT !YENO!==y (
    @echo.
    @echo Номер файла превысил 99. Продолжить нумеровать со 100 [y/n]
    set /P YENO=
    if NOT !YENO!==y (call :end & goto :EOF)
   )
  )
  IF /I !NEMER! LSS 10 (
   ren "%%i" "%NEM1%0!NEMER!%NEM2%.%RAS%"
  ) ELSE (
   ren "%%i" "%NEM1%!NEMER!%NEM2%.%RAS%"
  )
  @echo !NEMER! = %%~ni
  set /a NEMER=!NEMER!+1
)
call :end
goto :EOF
rem =====================================================
rem ============ Уровнять имена файлов с разными расширениями
:renren
@echo.
@echo Уровнять имена файлов с разными расширениями
@echo Т.е. всем файлам с раширением *.ras2
@echo   присвоить имена файлов с расширением *.ras1
@echo.
@echo Файлов должно быть одинаковое количество
@echo.
@echo Переименовываемые файлы не должны содеражать символов "^!" и "^^"
@echo.
@echo Введите расширение файлов-источников имен:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите расширение переименовываемых файлов:
set /P RAS1=
IF NOT DEFINED RAS1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Переименовать [name].%RAS1% в [name].%RAS% [y/n]
set YENO=n
set /P YENO=
if %YENO%==y (
@echo.
IF EXIST [[names.txt (del [[names.nam)
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  @echo %%~ni>>[[names.nam
)
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS1%" /a /o:n /n /c /b`) DO (
  set /a NEMER=!NEMER!+1
  for /f "delims=?" %%a in ([[names.nam) DO (
   set /a KOLWO=!KOLWO!+1
   IF /I  !KOLWO! EQU !NEMER! (
    @echo "%%a.%RAS1%"
    ren "%%i" "%%a.%RAS1%"
   )
  )
  set KOLWO=0
)
del [[names.nam
)
call :end
goto :EOF
rem =====================================================
rem ============ Дописать символы в конец имени до расширения
:insEnd
@echo.
@echo Дописать символы в конец имени до расширения
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите символы:
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Переименовать в [name]%NEM1%.%RAS% [y/n]
set YENO=n
set /P YENO=
if %YENO%==y (
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  @echo %%i
  ren "%%i" "%%~ni%NEM1%.%RAS%"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Дописать символы в начало имени
:insHom
@echo.
@echo Дописать символы в начало имени
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите символы:
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Переименовать в %NEM1%[name].%RAS% [y/n]
set YENO=n
set /P YENO=
if %YENO%==y (
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  @echo %%i
  ren "%%i" "%NEM1%%%~ni.%RAS%"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Удалить последние символы
:delEnd
@echo.
@echo Удалить последние символы
@echo.
@echo Переименовываемые файлы не должны содеражать символов "^!" и "^^"
@echo Вследствие уделения символов возможно возникновение файлов
@echo с одинаковыми именами. При этом переимование не будет осуществлено
@echo и возникнет сообщение
@echo "Файл с таким именем уже существует или не найден"
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите кол-во символов:
set /P KOLWO=
IF NOT DEFINED KOLWO (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Переименовать в [name-%KOLWO%].%RAS% [y/n]
set YENO=n
set /P YENO=
if %YENO%==y (
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  SET REN=%%~ni
  SET REN=!REN:~0,-%KOLWO%!
  @echo %%~ni
  ren "%%i" "!REN!.%RAS%"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Удалить первые символы
:delHom
@echo.
@echo Удалить первые символы
@echo.
@echo Переименовываемые файлы не должны содеражать символов "^!" и "^^"
@echo Вследствие уделения символов возможможно возникновение файлов
@echo с одинаковыми именами. При этом переимование не будет осуществлено
@echo и возникнет сообщение
@echo "Файл с таким именем уже существует или не найден"
@echo.
@echo Введите расширение:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите кол-во символов:
set /P KOLWO=
IF NOT DEFINED KOLWO (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Переименовать в [%KOLWO%-name].%RAS% [y/n]
set YENO=n
set /P YENO=
if %YENO%==y (
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  SET REN=%%~ni
  SET REN=!REN:~%KOLWO%!
  @echo %%~ni
  ren "%%i" "!REN!.%RAS%"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Сохранить имена файлов в текстовом документе
:save
@echo.
@echo Сохранить имена файлов в текстовом документе
@echo.
@echo Будет создан файл с именем [[names.txt
@echo Если файл уже существует, то он будет удален и записан заново
@echo.
@echo Файлы не должны содеражать символов "^!" и "^^"
@echo.
@echo Введите расширение файлов-источников имен:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Сохранить в [name].%RAS% в [[names.txt [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка:
IF EXIST [[names.txt (del [[names.txt)
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
@echo "%%i.%RAS%"
@echo %%~ni>>[[names.txt
)
call :end
goto :EOF
rem =====================================================
rem ============ Восстановить имена файлов из текстового документа
:recov
@echo.
@echo Восстановить имена файлов из текстового документа
@echo.
@echo Документ с именами должен быть текстовым файлом
@echo Имена для файлов должны располагаться по порядку
@echo На каждое новое имя отводится новая стока
@echo Пустые строки должны отсутсвовать
@echo Кол-во имен должно соответствовать кол-ву файлов
@echo.
@echo Файлы не должны содеражать символов "^!", """ и "^^"
@echo.
@echo Введите имя файла с именами (например: [[names.txt)
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
IF NOT EXIST %RAS% (
  @echo Файл не найден
  call :end & goto :EOF
)
@echo.
@echo Введите расширение переименовываемых файлов:
set /P RAS1=
IF NOT DEFINED RAS1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Восстановить в [name].%RAS1% из %RAS% [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS1%" /a /o:n /n /c /b`) DO (
set /a NEMER=!NEMER!+1
for /f "delims=?" %%a in (%RAS%) DO (
  set /a KOLWO=!KOLWO!+1
  IF /I  !KOLWO! EQU !NEMER! (
   @echo "%%a.%RAS1%"
   ren "%%i" "%%a.%RAS1%"
  )
)
set KOLWO=0
)
call :end
goto :EOF
rem =====================================================
rem ============ Переместить файлы, выбранные по маске
:fmov
@echo.
@echo Переместить файлы, выбранные по маске
@echo.
@echo * - Любое кол-во любых символов, ? - один любой символ
@echo Примеры:
@echo *копия.* - все файлы, оканчивающиеся на "копия"
@echo *копия.mkv - все файлы c расширением mkv, оканчивающиеся на "копия"
@echo копия*.* - все файлы, начинающиеся на "копия"
@echo копия*.mkv - все файлы c расширением mkv, начинающиеся на "копия"
@echo *копия*.mkv - все файлы c расширением mkv, содержащие "копия"
@echo *копия*.* - все файлы, содержащие "копия"
@echo.
@echo.
@echo Введите маску:
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите новый путь:
set /P REN=
IF NOT DEFINED REN (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo переместить %NEM1% в %REN%? [y/n]
set NEM2=n
set /P NEM2=
if %NEM2%==y (
@echo.
@echo Перемещаем:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "%NEM1%" /a /o:n /n /c /b`) DO (
  @echo %%~ni
  move "%%i" "%REN%/%%i"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Удалить файлы по маске
:fdel
@echo.
@echo Удалить все файлы по маске
@echo.
@echo * - Любое кол-во любых символов, ? - один любой символ
@echo Примеры:
@echo *копия.* - все файлы, оканчивающиеся на "копия"
@echo *копия.mkv - все файлы c расширением mkv, оканчивающиеся на "копия"
@echo копия*.* - все файлы, начинающиеся на "копия"
@echo копия*.mkv - все файлы c расширением mkv, начинающиеся на "копия"
@echo *копия*.mkv - все файлы c расширением mkv, содержащие "копия"
@echo *копия*.* - все файлы, содержащие "копия"
@echo.
@echo.
@echo Введите маску:
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Удалить %NEM1%? [y/n]
set NEM2=n
set /P NEM2=
if %NEM2%==y (
@echo.
@echo Удаляется:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "%NEM1%" /a /o:n /n /c /b`) DO (
  @echo %%~ni
  del "%%i"
)
)
call :end
goto :EOF
rem =====================================================
rem ============ Восстановить имена файлов с расширением из текстового документа
:recovB
@echo.
@echo Восстановить имена файлов с расширением из текстового документа
@echo.
@echo Документ с именами должен быть текстовым файлом
@echo Имена для файлов должны располагаться по порядку
@echo На каждое новое имя отводится новая стока
@echo Пустые строки должны отсутсвовать
@echo Кол-во имен должно соответствовать кол-ву файлов
@echo.
@echo Файлы не должны содеражать символов "^!", """ и "^^"
@echo.
@echo Введите имя файла с именами (например: [[names.txt)
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
IF NOT EXIST %RAS% (
  @echo Файл не найден
  call :end & goto :EOF
)
@echo.
@echo Введите расширение переименовываемых файлов:
set /P RAS1=
IF NOT DEFINED RAS1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Восстановить [name].%RAS1% из "%RAS%" [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка:
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS1%" /a /o:n /n /c /b`) DO (
set /a NEMER=!NEMER!+1
for /f "delims=?" %%a in (%RAS%) DO (
  set /a KOLWO=!KOLWO!+1
  IF /I  !KOLWO! EQU !NEMER! (
   ren "%%i" "%%a"
   @echo "%%a"
  )
)
set KOLWO=0
)
call :end
goto :EOF
rem =====================================================
rem ============ Сохранить имена файлов с расширением в текстовом документе
:saveB
@echo.
@echo Сохранить имена файлов с расширением в текстовом документе
@echo.
@echo Будет создан файл с именем [[names.txt
@echo Если файл уже существует, то он будет удален и записан заново
@echo.
@echo Файлы не должны содеражать символов "^!" и "^^"
@echo.
@echo Введите расширение файлов-источников имен:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo.
@echo Сохранить [name].%RAS% в [[names.txt. [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo Обработка:
@echo.
IF EXIST [[names.txt (del [[names.txt)
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
@echo "%%i.%RAS%"
@echo %%i>>[[names.txt
)
call :end
goto :EOF
rem =====================================================
rem ============ Сохранить имена с рас. в txt, заменив набор заданных символов
:repl
@echo.
@echo  Сохранить имена с рас. в txt, заменив набор заданных символов
@echo.
@echo Требуется текстовый файл, содержащий пары из старых и новых символов,
@echo разделенные знаком ^?. Пример:
@echo char^?newchar
@echo Если нужно исключить символ - не заполняйте newchar
@echo На одно слово/набор символов отволится одна строка.
@echo Пустые строки не допускаются.
@echo.
@echo Будет создан файл с именем [[names.txt.
@echo Если этот файл уже существует, то он будет удален и записан заново.
@echo.
@echo.
@echo Введите имя файла, содержащего список замен, например [[replece.txt :
set /P COMM=
IF NOT DEFINED COMM (
  @echo Значение не введено
  call :end & goto :EOF
)
IF NOT EXIST %COMM% (
  @echo Файл не найден
  call :end & goto :EOF
)
@echo.
@echo Введите расширение файлов-источников имен:
set /P RAS1=
IF NOT DEFINED RAS1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Сохранить [name].%RAS1% в [[names.txt. [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка
@echo.
IF EXIST [[names.txt (del [[names.txt)
for /f "usebackq delims=" %%i IN (`dir "*.%RAS1%" /a /o:n /n /c /b`) DO (
set NEM1=%%i
for /f "tokens=1,* delims=?" %%a in (%COMM%) DO (
  set NEM1=!NEM1:%%a=%%b!
)
@echo !NEM1!
@echo !NEM1!>>[[names.txt
)
call :end
goto :EOF
rem =====================================================
rem ============ Земенить символы в именах файлов
:replnam
@echo.
@echo  Земенить символы в именах файлов
@echo.
@echo Поиск в имени файла заданного набора символов и замена его на новый набор.
@echo Набор может состоять из одного символа.
@echo Для удаления заданных символов оставьте новый набор пустым.
@echo Будет земенен каждый набор.
@echo.
@echo Введите расширение переименовываемых файлов:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Введите заменяемые символы (Обязательно^!:):
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo Введите новые символы:
set /P NEM2=
@echo Заменить "%NEM1%" на "%NEM2%" [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка
@echo.
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
SET REN=%%~ni
SET REN=!REN:%NEM1%=%NEM2%!
@echo "!REN!"
ren "%%i" "!REN!.%RAS%"
)
call :end
goto :EOF
rem =====================================================
rem ============ Разместить файлы в папках по сотне в каждой
:sto
@echo.
@echo  Разместить файлы в папках по сотне в каждой
@echo.
@echo Так как некоторые команды не поддержвают нумерацию файлов больше 99,
@echo можно использовать эту команду для обработки каждой сотни по отдельности
@echo.
@echo Пропуски нумераций недопустимы, так как приведут к сдвигу в распределении.
@echo Если есть пропуски, то воспользуйтесь командой "разместить по сетам",
@echo приняв за номер сета первый символ нумерации
@echo.
@echo Содержащиеся текущей папке файлы будут перемещены в подпапки по сотне в каждой
@echo.
@echo Введите расширение перемещаемых файлов:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Введите номер первого файла:
set /P NUM1=
IF NOT DEFINED NUM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NUM1% GTR 999 (
  @echo.
  @echo Вы задали больше 999
  call :end & goto :EOF
)
@echo.
@echo Разместить [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Обработка
@echo.
SET NEM1=%NUM1:~0,-2%00
md "%NEM1%"
for /f "usebackq delims=?" %%i IN (`dir "*.%RAS%" /a /o:n /n /c /b`) DO (
  @echo %%~ni
  move "%%i" "!NEM1!/%%i"
  set /a NUM1+=1
  IF !NUM1:~-2!==00 (
   SET NEM1=!NUM1:~0,-2!00
   md !NEM1!
  )
)
call :end
goto :EOF
rem =====================================================
rem ============ Разместить файлы в папках по сетам
:toset
@echo.
@echo  Разместить файлы в папках по сетам (от 0 до 99)
@echo.
@echo Эта каманда размещает по отдельным папкам группы файлов (до 99)
@echo  с одинаковой численной переменной в имени от 0 до 99
@echo.
@echo Например, чтобы разделить по папкам  все файлы типа Example_Set_SS_photo_NN.jpg,
@echo где NN - множество файлов от 0 до 99, SS - номера сетов (от 0 до 99)
@echo.
@echo Так же, этой командой можно разбить по папкам файлы, имеющие нумерацию типа
@echo Example_011, Example_111, Example_211
@echo.
@echo Содержащиеся текущей папке файлы будут перемещены в подпапки в соответствии с сетом
@echo.
@echo Введите расширение перемещаемых файлов:
set /P RAS=
IF NOT DEFINED RAS (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Введите имя файла до номера сета (постоянная часть)
set /P NEM1=
IF NOT DEFINED NEM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
@echo.
@echo Ввдите номер первого сета
set /P NUM1=
IF NOT DEFINED NUM1 (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NUM1% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
@echo Ввдите номер последнего сета
set /P NUM2=
IF NOT DEFINED NUM2 (
  @echo Значение не введено
  call :end & goto :EOF
)
if /I %NUM2% GTR 99 (
  @echo.
  @echo Вы задали больше 99
  call :end & goto :EOF
)
IF /I NOT %NUM2% GEQ %NUM1% (
  @echo.
  @echo Номер первого больше номера последнего
  call :end & goto :EOF
)
@echo.
@echo Нумерация сетов начинается с 0 (01, 02, 03) [y/n]
set NEMER=y
set /P NEMER=
@echo Разместить [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
rem Цикл
:loop_toset
rem выход, если номер сета привысил максимальный
IF /i !NUM1! GTR !NUM2! (call :end & goto :EOF)
rem Состряпать имя сета
if %NEMER%==y (
  IF /I !NUM1! LSS 10 (
   SET REN=%NEM1%0!NUM1!
  ) ELSE (
   SET REN=%NEM1%!NUM1!
  )
) ELSE (
  SET REN=%NEM1%!NUM1!
)
rem Создать папку с сетом
md "!REN!"
for /f "usebackq delims=?" %%i IN (`dir "!REN!*.%RAS%" /a /o:n /n /c /b`) DO (
  @echo %%~ni
  move "%%i" "!REN!/%%i"
)
set /a NUM1+=1
goto loop_toset
call :end
goto :EOF
rem =====================================================
rem ============ Создать тестовые файлы (больше 99)
:testB
@echo.
@echo  Создать тестовые файлы (до 999)
@echo.
@echo Для этих операций лучше перейти в новую пустую папку
@echo.
@echo В текущем каталоге будет создано заданное количество тестовых файлов
@echo (от 000 до 999) с расширением *.ini и содержащих внутри тестовое имя.
@echo Также будут созданы файлы замен, и файл с тестовым скриптом
@echo Можно опробовать операции на этих файлах.
@echo Важно убедится, что антивирус не влияет на работу скриптов.
@echo.
@echo Введите начальный номер тестового файла (от 0)
set /P NUM1=
IF NOT DEFINED NUM1 (
@echo Значение не введено
call :end & goto :EOF
)
if /I %NUM1% GTR 999 (
@echo.
@echo Вы задали больше 999
call :end & goto :EOF
)
set REN=%NUM1%
@echo Введите номер последнего файла (до 999)
set /P NUM2=
IF NOT DEFINED NUM2 (
@echo Значение не введено
call :end & goto :EOF
)
if /I %NUM2% GTR 999 (
@echo.
@echo Вы задали больше 999
call :end & goto :EOF
)
IF /I NOT %NUM2% GEQ %NUM1% (
@echo.
@echo Номер первого больше номера последнего
call :end & goto :EOF
)
@echo Создать файлы [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
@echo Тестовые файлы:
:000
IF /I %NUM1% LSS 100 (
IF /I %NUM1% LSS 10 (
  SET NAME=00%NUM1%
) ELSE (
  SET NAME=0%NUM1%
)
) ELSE (
SET NAME=%NUM1%
)
@echo "[ffm.com]_ger_jep_R _ _ R %NAME% [720p].ini"
@echo "[ffm.com]_ger_jep_R _ _ R %NAME% [720p]" > "[ffm.com]_ger_jep_R _ _ R %NAME% [720p].ini"
set /a NUM1+=1
IF /I %NUM1% LEQ %NUM2% goto 000
@echo.
@echo Файл земен: [[replece.txt
@echo [?(>[[replece.txt
@echo ]?)>>[[replece.txt
@echo 720?540>>[[replece.txt
@echo ffm.com?ABB.RU>>[[replece.txt
@echo.
@echo Файл с командой: [[command.bat
IF /I %REN% LSS 100 (
IF /I %REN% LSS 10 (
  SET REN=00%REN%
) ELSE (
  SET REN=0%REN%
)
) ELSE (
SET REN=%REN%
)
@echo Задача скрипта - удалить файл [ffm.com]_ger_jep_R _ _ R %REN% [720p].ini
@echo del "[ffm.com]_ger_jep_R _ _ R %REN% [720p].ini">[[command.bat
call :end & goto :EOF
rem =====================================================
rem ============ Создать тестовые файлы (12)
:test
@echo.
@echo  Создать тестовые файлы (12 штук)
@echo.
@echo В текущем каталоге будет создано 12 тестовых файлов
@echo с расширениями *.ini и *.txt, содержащих внутри порядковый номер.
@echo Можно опробовать операции на этих файлах.
@echo Важно убедится, что антивирус не влияет на работу скриптов.
@echo.
@echo Создать файлы [y/n]
set YENO=n
set /P YENO=
if NOT %YENO%==y (call :end & goto :EOF)
@echo.
set num=100
:00
@echo %num% > %num%.txt
@echo %num%.txt
set /a num=%num% + 1
IF /I %num% LSS 112 goto 00
set num=500
:01
@echo %num% > %num%.ini
@echo %num%.ini
set /a num=%num% + 1
IF /I %num% LSS 512 goto 01
call :end & goto :EOF
rem =====================================================
rem ============ Перейти в другой каталог
:newFold
@echo.
@echo  Перейти в другой каталог
@echo.
@echo Введите путь нового каталога для перехода в новый каталог
@echo Введите имя каталога для перехода в каталог ниже
@echo Введите "..", чтобы перейти на уровень выше
@echo Не вводите ничего, чтобы узнать текущее положение
@echo.
@echo Введите путь:
set /P NEM1=
@echo.
if not "%NEM1%" == "" (cd /D "%NEM1%")
dir
call :end & goto :EOF
rem =====================================================
rem =============== Очистка переменных (на всякий случай, задолбался их чистить избирательно)
:end
@echo.
@echo Завершено
@echo.
pause
set RAS=
set RAS1=
set NEM1=
set NEM2=
set NEMER=
set NEMER1=
set KOLWO=
set REN=
set NUM1=
set NUM2=
set CHAR1=
set CHAR2=
set COMM=
cls
goto :EOF
rem =====================================================
@echo.
@echo ++++++++ ERROR! END OF FILE. ++++++++++++++
@echo.
pause
EXIT
[Профиль]  [ЛС] 

mixaiil77

Стаж: 10 лет 4 месяца

Сообщений: 827


mixaiil77 · 25-Фев-18 11:51 (спустя 1 месяц)

[Цитировать] 

Подскажите, пожалуйста, какие изменения надо внести в батник, чтобы вся информация из командного окна записывалась в текстовый лог?
батник такой:
скрытый текст
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
if not exist DONE (md DONE)
FOR %%a in (*) do (
ffmpeg -i "%%~a" 2>&1 |find "misdetection" >NUL
IF errorlevel 1 (
FOR /F "usebackq tokens=3,5 delims=#.:, " %%b in (`^
ffmpeg -i "%%~a" ^
2^>^&1 ^|find "Audio:"`) do (
set ext=%%c
set ext3=!ext:~0,3!
IF %%c==aac set ext=adts
IF %%c==vorbis set ext=ogg
IF !ext3!==pcm set ext=wav
IF !ext3!==wma set ext=wma
REM removing (lang) tag
FOR /F "delims=(" %%b in ("%%b") do set num=%%b
ffmpeg -i "%%~a" -acodec copy -map 0:!num! "%%~a_audio%%b.!ext!"
move "%%~a_audio%%b.!ext!" "DONE\"
)
) ELSE echo "%%~a" misdetected and skipped
)
Желательно, чтобы для каждого файла создавался отдельный лог при пакетной обработке с названием для конкретного файла.
[Профиль]  [ЛС] 

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 25-Фев-18 14:55 (спустя 3 часа, ред. 26-Фев-18 17:45)

[Цитировать] 

mixaiil77
Если нужна вообще вся информация с терминала, то вызовите этот батник из другого
Код:
call "command.bat">log.txt 2>&1
Если нужна конкретная конкретная информация - расставте в нужных местах батника перенаправления на вывод в файл.
Для вывода с команды:
Код:
>>%%a_log.txt
либо так:
Код:
>>%%a_log.txt 2>&1

где %%a - переменная, содержащая имя текущего файла,
Для вывода из переменной ext:
Код:
@echo !ext! >>%%a_log.txt
Получится что-то вроде этого:
скрытый текст
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
if not exist DONE (md DONE)
FOR %%a in (*) do (
@echo "%%~a">%%a_log.log
@echo. >> %%a_log.log
ffmpeg -i "%%~a" 2>&1 |find "Invalid" >>%%a_log.log 2<&1
IF errorlevel 1 (
  FOR /F "usebackq tokens=3,5 delims=#.:, " %%b in (`^ ffmpeg -i "%%~a" ^ 2^>^&1 ^|find "Audio:"`) do (
    set ext=%%c
    set ext3=!ext:~0,3!
    IF %%c==aac set ext=adts
    IF %%c==vorbis set ext=ogg
    IF !ext3!==pcm set ext=wav
    IF !ext3!==wma set ext=wma
    @echo. >> %%a_log.log
    @echo !ext!>> %%a_log.log
    REM removing (lang) tag
    FOR /F "delims=(" %%b in ("%%b") do set num=%%b
    @echo. >> %%a_log.log
    ffmpeg -i "%%~a" -acodec copy -map 0:!num! "%%~a_audio%%b.!ext!" >> %%a_log.log 2>&1
    @echo. >> %%a_log.log
    move "%%~a_audio%%b.!ext!" "DONE\"  >> %%a_log.log
  )
) ELSE @echo "%%~a" misdetected and skipped >> %%a_log.log
)
pause
[Профиль]  [ЛС] 

mixaiil77

Стаж: 10 лет 4 месяца

Сообщений: 827


mixaiil77 · 26-Фев-18 16:31 (спустя 1 день 1 час)

[Цитировать] 

Pergydrol писал(а):
74869884Получится что-то вроде этого:
Спасибо! Работает. Создаются еще два дополнительных лога:
скрытый текст
Код:
"ffmpeg.exe"
mp1
ffmpeg version N-49610-gc2dd5a1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Feb  5 2013 13:20:59 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 17.101 / 52. 17.101
  libavcodec     54. 91.100 / 54. 91.100
  libavformat    54. 61.104 / 54. 61.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 35.101 /  3. 35.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[mp3 @ 020da000] Format mp3 detected only with low score of 25, misdetection possible!
[mp3 @ 020dbe00] Header missing
    Last message repeated 26 times
[mp3 @ 020da000] max_analyze_duration 5000000 reached at 5004000 microseconds
[mp3 @ 020da000] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'ffmpeg.exe':
  Duration: 00:11:11.18, start: 0.000000, bitrate: 256 kb/s
    Stream #0:0: Audio: mp1, 32000 Hz, stereo, s16p, 256 kb/s
[NULL @ 021a6ca0] Unable to find a suitable output format for 'ffmpeg.exe_audio0.mp1'
ffmpeg.exe_audio0.mp1: Invalid argument
и
Код:
"new 1.bat"
new 1.bat: Invalid data found when processing input
"new 1.bat" misdetected and skipped
Но они мне совершенно не мешают, главное что нужные мне логи есть.
Pergydrol писал(а):
74869884Если нужна вообще вся информация с терминала, то вызовите этот батник из другого
Код:
call "command.bat">log.txt
А вот с этим не получилось. Я правильно понял что надо создать батник с этой строкой, заменив в кавычках command.bat на полное имя батника, с которого надо снять лог работы и запустить батник №2? Я так и сделал, но в логе-файле только команды батника №1 (с которого хотел снять лог). Или должен быть какой-то иной порядок действий?
[Профиль]  [ЛС] 

Pergydrol

Стаж: 7 лет 11 месяцев

Сообщений: 56


Pergydrol · 26-Фев-18 17:49 (спустя 1 час 18 мин.)

[Цитировать] 

mixaiil77 писал(а):
74876396Создаются еще два дополнительных лога
Так и должно быть. Команда FOR %%a in (*) do ( обрабатывает все файлы в рабочей папке. Для конктретных расширений нужно указать явно: (*.mp4 *.mkv) и т.д.
Я заменил "misdetection" на "Invalid" только потому, что не понял, когда должна возникать ошибка misdetection. При обработке немультимедийных файлов у меня выводоло "Invalid", и я оставил так.
mixaiil77 писал(а):
74876396, но в логе-файле только команды батника №1
mixaiil77 писал(а):
74876396Или должен быть какой-то иной порядок действий?
Извиняюсь, я забыл про волшебный ключ 2>&1. Поправил предыдущий пост.
И еще, тут зависит от того, с какого батника вы перенаправляете вывод. Если попытались перенаправить вывод с нового варианта батника, то внутри он уже перенаправил вывод с ffmpeg внутрь файла. Единственное, что не перенаправлено и может появиться в глобальном логе - команды самого батника, и то при условии @echo on . Поэтому, целиком выводить в файл следует первый вариант батника.
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error