Пакетный файл сценария для преобразования каждого файла в каждой папке по одному - PullRequest
3 голосов
/ 11 октября 2011

То, что я пытаюсь сделать, - это конвертировать файлы .ogg, хранящиеся в разных папках.Мне нужен пакетный скрипт, чтобы перейти из первой папки и файла, преобразовать его и только потом перейти к следующему файлу в папке.Также в процессе преобразования создается волновой файл, поэтому мне нужно, чтобы он был удален в конце преобразования файлов вместе с исходным файлом .ogg.Это мой код до сих пор.Он проходит через все папки и файлы, выполняя oggdec, создавая огромное количество волновых файлов.Мне нужно, чтобы скрипт выполнял только одну папку и один файл за раз

for /r %%i in (*.ogg) do oggdec "%%i"
for /r %%i in (*.ogg) do del "%%i"
for /r %%i in (*.wav) do lame -m m   "%%i"
for /r %%i in (*.wav) do del "%%i"

@echo off
etlocal enabledelayedexpansion
set deletestring=.wav
echo Ready to start
echo.

echo.
for /f "delims==" %%F in ('dir /b /s /a-d ^| find "%deletestring%"') do (
    set oldfilename=%%~nxF
    set pathname=%%~dpF
    set newfilename=!oldfilename:%deletestring%=!
    Ren "!pathname!!oldfilename!" "!newfilename!"
    )
echo.
echo All done

(

Этот код выше почти работает в том смысле, что конечный результат работает, но, к сожалению, он мне нужен для преобразования только одного файла за рази удалите исходные файлы .ogg и .wav, прежде чем переходить к следующему файлу .ogg. Поэтому мне нужно, чтобы он следовал этому правилу. Возьмите первую папку и первый файл .ogg сделайте oggdec для файла, создав файл .wav del для файла .ogglame -mm для файла .wav, создающего файл .mp3, а затем файл .wav переходят к следующему файлу .ogg, пока все файлы в папке не будут преобразованы, а затем перейдут к следующей папке, которая может отсутствовать в той же папке.Пример структуры папок.

Sounds/voice/greek
Sounds/voice/English
Sounds/voice/russion

1 Ответ

5 голосов
/ 11 октября 2011

Использование расширенной замены для переменной FOR:

  • %% ~ di - буква диска
  • %% ~ pi - путь к файлу
  • %% ~ ni - имя файла без расширения

Результирующий скрипт:

for /r %%i in (*.ogg) do (
  oggdec "%%i"
  del "%%i"
  lame -m m "%%~dpni.wav"
  del "%%~dpni.wav"
)
...