![](/img/trans.png)
[英]Batch Script for conversion of WAV files to MP3 automatically by traversing through sub-directories
[英]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
或/Month
從Base
向下掃描整個樹。
瘸腿和德爾命令僅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.