将目录中的所有文件重命名为顺序默认值

将目录中的所有文件重命名为顺序默认值

我在子目录 ( mayor) 中有一组 mp3 文件,我想使用 ffmpeg 转换每个文件(如下所示:ffmpeg -i <input_file> -ar 44100 -ab 128k -f mp3 <output_file>),并将结果文件mayor_out按顺序存储在同级文件夹中。我尝试回答了一些 stackFOR问题,但没有人解释如何在文件/目录迭代中执行此操作,所以我问了一个新问题。

答案1

好吧,我使用这个.bat脚本成功了(灵感来自这个答案

@echo off
cd /D mayor
set _num=1
FOR /R %%X IN (*.mp3) DO call :body %%X
goto :eof

:body
ffmpeg -i %1 -ar 44100 -ab 128k -f mp3 ../mayor_out/YAL_m%_num%.mp3
set /a "_num=_num+1"
goto :eof
pause

答案2

以下 Powershell 应该执行您需要的命令,根据需要调整路径:

  1. 在“父”目录(例如 C:\parent\)中创建一个名为“ProcessMp3.ps1”的文件,并将以下代码添加到其中。

    ForEach($i in Get-ChildItem -filter "*.mp3" -Path "C:\parent" ){  
       ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sibling\$i"
    }
    
  2. 在父目录下创建一个名为“sibling”的目录,例如“C:\parent\sibling\”。

  3. 在命令提示符中运行:

    Powershell ./ProcessMp3.ps1
    

如果顺序只是意味着在文件名中添加 1、2、3 等作为前缀,那么脚本可能如下所示:

$c=1
ForEach($i in Get-ChildItem  -filter "*.mp3" -Path "C:\parent" ){  
  ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sib\$c-$i"
  $c++
}

相关内容