2011-05-16 183 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 
    ) 
) 
) 
相关问题