多个文件夹中多个文件的批处理

时间:2011-05-16 02:19:26

标签: batch-file batch-processing

我正在使用SoX声音编辑命令行工具。我正在尝试创建一个批处理文件,允许我将多个文件夹拖到它上面并让文件处理文件夹中的所有mp3文件,然后将它们输出到转换后的文件夹中,排列到与原始文件夹相同的文件夹中拖了。我目前有:

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

这允许我拖动文件,但不能拖动整个文件夹。我真正需要做的就是把它提升到一个水平。正如您可能已经猜到的那样,我只有很少的批处理知识,所以解释会非常有用。

感谢您的时间!

2 个答案:

答案 0 :(得分: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
   ) 
 )
)

答案 1 :(得分: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

代码现在使用批处理文件搜索文件夹中的每个目录,然后输入目录并处理其中的文件。