我正在使用SoX声音编辑命令行工具。我正在尝试创建一个批处理文件,允许我将多个文件夹拖到它上面并让文件处理文件夹中的所有mp3文件,然后将它们输出到转换后的文件夹中,排列到与原始文件夹相同的文件夹中拖了。我目前有:
cd %~dp0
mkdir converted
FOR %%A IN (%*) DO sox %%A -c 1 "converted/%%~nxA" mixer -1
pause
这允许我拖动文件,但不能拖动整个文件夹。我真正需要做的就是把它提升到一个水平。正如您可能已经猜到的那样,我只有很少的批处理知识,所以解释会非常有用。
感谢您的时间!
答案 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
代码现在使用批处理文件搜索文件夹中的每个目录,然后输入目录并处理其中的文件。