2011-05-16 179 views
0

我正在使用SoX聲音編輯命令行工具。我試圖創建一個批處理文件,允許我將多個文件夾拖放到文件夾中,然後讓文件處理文件夾中的所有mp3文件,然後將它們輸出到轉換後的文件夾中,並排列到與原始文件夾名稱相同的文件夾中拖着。我目前有:批處理多個文件夾中的多個文件

cd %~dp0 
mkdir converted 
FOR %%A IN (%*) DO sox %%A -c 1 "converted/%%~nxA" mixer -1 
pause 

這使我可以拖動文件,但不是整個文件夾。我真正需要做的就是把它提升到一個水平。正如您可能已經猜到的那樣,我對批處理的知識很少,所以解釋會非常有益。

謝謝你的時間!

回答

0

我設法去適應這個文件使用嵌套的for循環來完成我想要的東西:

cd %~dp0 
mkdir converted 
FOR /d %%A IN (*) DO (
    IF EXIST %%A/*.mp3 (
     cd converted 
     mkdir %%~nxA 
     cd .. 
    ) 
    cd %%A 
    For %%B IN (*.mp3) DO (
     cd .. 
     sox "%%A\%%~nxB" -c 1 "converted/%%~nxA/%%~nxB" mixer -1 
     cd %%A 
    ) 
    cd .. 
) 
pause 

現在,該代碼搜索每個目錄包含批處理文件的文件夾,然後進入目錄並處理其中的文件。

1

您需要檢查傳遞的名稱是文件,目錄還是沒有。你可以試試這個代碼,並根據需要進行修改

FOR %%a IN (%*) DO (
    IF EXIST %%~sa\NUL (
    echo %%~fa is a directory 
) else (
    IF EXIST %%a (
    echo %%~fa is a file 
    ) else (
    echo %%~a does not exist 
    ) 
) 
) 
相關問題