如何在windows批处理文件中为图像序列构建printf样式字符串?
对于windows批处理文件,是否有一种方法可以检测给定文件夹中的图像序列,并生成一个以printf样式表示的字符串 例如: 一个目录包含300个名为如何在windows批处理文件中为图像序列构建printf样式字符串?,windows,batch-file,ffmpeg,Windows,Batch File,Ffmpeg,对于windows批处理文件,是否有一种方法可以检测给定文件夹中的图像序列,并生成一个以printf样式表示的字符串 例如: 一个目录包含300个名为S002\u comp\u v04.0000.exr到S002\u comp\u v04.0299.exr的文件,我需要一个类似S002\u comp\u v04.%04d.exr的字符串 背景: 我想要一个批处理文件,我可以把任何文件夹放在其中,它处理文件夹的内容,以便将其传递给ffmpeg进行编码。python使用简单-但如何仅使用window
S002\u comp\u v04.0000.exr
到S002\u comp\u v04.0299.exr
的文件,我需要一个类似S002\u comp\u v04.%04d.exr
的字符串
背景:
我想要一个批处理文件,我可以把任何文件夹放在其中,它处理文件夹的内容,以便将其传递给ffmpeg进行编码。python使用简单-但如何仅使用windows批处理文件实现这一点?windows版本是8.1和10。正如我在评论中所说,这个问题缺少几个要点,因此我补充了它们:
- 文件夹中只有一个序列字符串的文件
- 所有文件中的计数器部分都具有相同的长度,并且从零开始
- 计数器与basename和文件扩展名之间用一个点分隔
@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
可能,但不是小事,试试看。恐怕我不明白你的要求。给定这两个文件名,例如
S002\u comp\u v04.0000.exr
和S002\u comp\u v04.0299.exr
,您想要的输出字符串是什么?是S002\u comp\u v04.%04d.exr
?为此,您只需要一个文件,或者根本不需要!你错过了一个核心点,我想…嗨@Aacini,是的S002\u comp\u v04.%04d。exr
是我想要的字符串。它表示一个长度、开始和结束未知的文件序列,但告诉软件有一个序列及其命名方式和名称格式。因此,基本上我正在寻找一种方法来循环遍历文件夹的内容,并检测除了名称的计数部分之外名称相同的文件(在我的情况下,可能会想当然地认为计数器与基本名称和文件扩展名之间用一个点分隔)。对不起,我的问题还不够清楚,但你的解决方案正是我想要的。我真的不相信这在批处理文件中是可能的。非常感谢你的努力!