簡體   English   中英

通過子目錄將.wav文件批量轉換為.mp3文件,然后刪除其余的.wav文件

[英]Batch convert .wav files to .mp3 files through sub-directories then delete the remaining .wav files

我在一個廣播電台工作,在這里使用稱為Skimmer Plus的程序記錄日志,該程序從父目錄“ Air Check”中創建多個子目錄,目錄樹如下所示(降序):

空氣檢查
年(所以現在是2016年)
月(11月)
天(22)

.wav文件保存在Day目錄中,但是沒有文件保存在其他任何目錄中,僅在“ Day”目錄中。

我正在努力的工作是首先自動將.wav文件轉換為.mp3文件。 現在,我只使用the腳的滴管“ lamedropXPd3-64.exe”,但是我也下載了“ lame.exe”,並且可以輕松使用。 這是我嘗試進行自動轉換的代碼:

@echo off
PushD for %%i in (*.wav) do "\\wideorbit.byui.edu\d\Radio Productions\Air Check\2016\November\22" -V 6 --vbr-old --resample 22.05 "%%i" "%%~ni.mp3" & PopD
pause

我得到的錯誤消息是:“文件名,目錄名或卷標簽語法不正確。”

這是我的第一個問題。

第二個問題(刪除剩余的.wav文件以節省空間)我離工作越來越近了。 這是我的代碼:

@echo off
PushD "\\wideorbit.byui.edu\d\Radio Productions\Air Check\2016\November\22" &&(forfiles -m *.wav* -d -0 -c "cmd /c del /s /q @path") & PopD
pause

這可以刪除所有文件,但是如您所見,它只會影響當天。 我希望它從這里開始起作用:

@echo off
PushD "\\wideorbit.byui.edu\d\Radio Productions\Air Check\" &&(forfiles -m *.wav* -d -0 -c "cmd /c del /s /q @path") & PopD
pause

但是,當我嘗試運行該命令時,出現以下錯誤消息:“錯誤:找不到具有指定搜索條件的文件”。

我可以對代碼的兩部分進行什么更改以使其完全可操作?

(此外,我@echo off@echo off並在其中pause以方便進行測試,當我獲得最終程序時,我將其刪除)。

謝謝!

@echo off
PushD
for %%i in (*.wav) do someexecutablenameherwouldbehelpfulIthink "\\wideorbit.byui.edu\d\Radio Productions\Air Check\2016\November\22" -V 6 --vbr-old --resample 22.05 "%%i" "%%~ni.mp3"
PopD
pause

為了使您得到一些體面的技巧,默認情況下,該批次將在當前文件夾中掃描.wav文件。 但是有一些可選的命令行參數,可以通過/FullScan或當前/Year/MonthBase向下掃描整個樹。

瘸腿和德爾命令僅Echoed只要在倒數第二行兩個回波命令住宿。

:: Wav2mpg.cmd
@Echo off & SetLocal EnableExtensions EnableDelayedExpansion
Set Lame="X:\Path\to\your\lame.exe"
Set LameOpts= -V 6 --vbr-old --resample 22.05
Set "Base=\\wideorbit.byui.edu\d\Radio Productions\Air Check"

:: Get current Date
For /f "tokens=1-3 delims=.+-" %%A in (
  'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set _DT=%%A
Set "year=%_DT:~0,4%"&Set "Month=%_DT:~4,2%"&Set "Day=%_DT:~6,2%"
:: Strip leading zero from Month, Get Monthname
set /a Mo=100%Month%%%100
For /f "tokens=%Mo%" %%A in (
  'echo/January February March April May June^
   July August September October November December'
) do set MonthName=%%A

If /i "%~1" Equ "/FullScan" Goto :Skipover
If /i "%~1" Equ "/Year"  Set Base=%Base%\%Year%
If /i "%~1" Equ "/Month" Set Base=%Base%\%Year%\%MonthName%
If /i "%~1" Equ "" Set Base=%Base%\%Year%\%MonthName%\%Day%

:skipover
PushD "%Base%" || (Echo couldn't pushd %Base%&Pause&Exit /B 1)
For /f  "delims=" %%A in (
  'Dir /B/S/A-D .\*.wav'
) Do Echo %Lame% %LameOpts% "%%~fA" "%%~dpnA.mp3" && Echo Del "%%~fA"
PopD

要將目錄樹中的所有.wav文件轉換為.mp3文件,可以使用以下代碼:

pushd "\\wideorbit.byui.edu\d\Radio Productions\Air Check" || exit /B 1
for /R %%F in ("*.wav") do (
    pushd "%%~dpF" && (
        lame -V 6 --vbr-old --resample 22.05 "%%~nxF" "%%~nF.mp3" && (
            del "%%~nxF"
        )
        popd
    )
)
popd

要轉換今天的.wav文件(或更准確地說,是今天修改日期的.wav文件,而不檢查父目錄名稱),可以使用以下代碼:

pushd "\\wideorbit.byui.edu\d\Radio Productions\Air Check" || exit /B 1
for /F "delims=" %%F in ('
    forfiles /S /M "*.wav" /D +0 /C "cmd /C echo @path"
') do (
    pushd "%%~dpF" && (
        lame -V 6 --vbr-old --resample 22.05 "%%~nxF" "%%~nF.mp3" && (
            del "%%~nxF"
        )
        popd
    )
)
popd

請注意,對於這兩種方法,成功轉換的.wav文件都將在之后刪除。

只能推薦“ EZ CD音頻轉換器”,它使用了很多年,非常興奮,可以進行轉換(並且還可以一次刪除)。 不貴,值得每一分。 有30天的免費試用期。

對於組織,移動,標記,我建議使用“ mp3tag”。 可以批量工作並標記和移動文件。 很棒的免費軟件,但要發揮全部潛能,您必須學習語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM