如何在Windows批处理文件中为图像序列构建printf样式的字符串?

时间:2015-11-25 11:01:31

标签: windows batch-file ffmpeg

是否有办法使用Windows批处理文件检测给定文件夹中的图像序列并生成以printf样式表示法表示它的字符串?

例如:

一个目录包含300个名为S002_comp_v04.0000.exrS002_comp_v04.0299.exr的文件,我需要一个像S002_comp_v04.%04d.exr这样的字符串。

背景:

我想要一个批处理文件,我可以在其中删除任何文件夹并处理文件夹的内容,以便将其传递给ffmpeg进行编码。使用python很容易 - 但是如何仅使用Windows批处理文件实现这一目标? Windows版本为8.1和10。

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,这个问题有几个缺失点,所以我补充说:

  • 在文件夹中 一个序列字符串的文件。
  • 所有文件中的计数器部分具有相同的长度,从零开始。
  • 计数器用基本名称和文件扩展名分隔。

下面的批处理文件创建请求的字符串。

@echo off
setlocal EnableDelayedExpansion

rem Get the base name, the counter and the extension of first file
for /F "tokens=1-3 delims=." %%a in ('dir /B %1') do (
   set "basename=%%a"
   set "counter=%%b"
   set "ext=%%c"
   goto break
)
:break

rem Get the length of counter
for /L %%i in (1,1,9) do if "!counter:~%%i,1!" neq "" set /A len=%%i+1

echo %basename%.%%0%len%d.%ext%

示例:

C:\> dir theFolder /b
S002_comp_v04.0000.exr
S002_comp_v04.0299.exr

C:\> test.bat theFolder
S002_comp_v04.%04d.exr