Batch file 使用批处理文件计数并将第n个文件复制到新目录,多次传递
我正在用IPCAM做一个延时视频。从黄昏到黎明,我每15/20秒拍一次照片。每个文件夹都标有日期、每天等 我制作了一个timelapse视频,使用每天的所有文件,使用大量文件,目前为3750 我还想做3个单独的时间推移视频使用一组图像 方程式是 (总文件数)/(25 fps)/(3秒长)=要跳过多少个文件 范例 3750/25/3=要跳过的50个文件 所以我现在正在使用这个代码Batch file 使用批处理文件计数并将第n个文件复制到新目录,多次传递,batch-file,cmd,command,Batch File,Cmd,Command,我正在用IPCAM做一个延时视频。从黄昏到黎明,我每15/20秒拍一次照片。每个文件夹都标有日期、每天等 我制作了一个timelapse视频,使用每天的所有文件,使用大量文件,目前为3750 我还想做3个单独的时间推移视频使用一组图像 方程式是 (总文件数)/(25 fps)/(3秒长)=要跳过多少个文件 范例 3750/25/3=要跳过的50个文件 所以我现在正在使用这个代码 mkdir "3" @echo off set Counter=0 for %%f in (*.jpg) do ca
mkdir "3"
@echo off
set Counter=0
for %%f in (*.jpg) do call :p "%%f"
goto :p
:p
set /a Counter+=1
set /a X=Counter %% "50"
if %X%==0 copy %1 "3"
goto :eof
这将创建目录“3”,并将每50个文件复制到该文件夹中。然后我可以使用文件夹中的文件制作timelapse视频
然后我必须编辑批处理文件10秒钟,也要编辑30幅图像,然后分别运行
如何将所有行添加到一个批处理文件中,以便每次只需编辑一个文件
mkdir "10"
@echo off
set Counter=0
for %%f in (*.jpg) do call :p "%%f"
goto :p
:p
set /a Counter+=1
set /a X=Counter %% "15"
if %X%==0 copy %1 "10"
goto :eof
&
希望这有点道理。我也会使用批处理来计算文件和计算
@echo off
:: get total number of files
for /f %%A in ('dir /b *.jpg ^| find /v /c ""') do set /A total=%%A
:: create subfolders and calculate skip
for %%A in (3 10 30) Do (
mkdir "%%A"
if %%A neq 30 (
Set /A "skip%%A=total/25/%%A
) Else (
Set /A "skip%%A=total/%%A
)
)
set Counter=0
for %%f in (*.jpg) do call :p "%%f"
goto :EOF
:p
set /a "Counter+=1,X=Counter%%skip3,Y=Counter%%skip10,Z=Counter%%skip30"
if %X%==0 copy %1 "3"
if %Y%==0 copy %1 "10"
if %Z%==0 copy %1 "30"
goto :eof
编辑将文件夹30更改为包含30个jpg。您可以尝试类似的方法,输入要创建的每个目录的秒数和要跳过的文件数。(假设批处理文件与JPG文件位于同一目录中,并且当前目录也设置为此目录。) 要跳过的文件数可以通过获取当前目录中的JPG文件数,除以每秒帧数(可以定义为脚本中的常量变量)和用户输入的秒数来计算。我不确定这是否是您想要的,因为您上一个示例中的“125”似乎已关闭
dbenham的以下回答说明了如何获取目录中的数字文件:谢谢,我想问一下如何计算文件,这很好。将有一个3秒的剪辑,一个10秒的剪辑和最后一个“30”不是一个剪辑,但我想保存30个原始文件,从那天起,我可以删除文件夹中的其余文件,以节省空间。目前每天大约10gb的容量很快就会增加。保存较小的剪辑和仅30张照片会将其裁剪得很单调。一旦一个月/一年过去了,我可以对整个月/一年进行时间间隔,从30个原始数据中进行挑选。编辑批次以包括计算(未经测试),这非常有效。正如我所需要的。我会尝试使用上面的链接自动计算,希望工作更容易:)非常感谢,这比我想象的要好。3和10都是文件夹上的斑点“30”实际上只是我想保留的30张原始照片,而不是30秒的剪辑。我试着自己修改它,但我一事无成。与其除以25,不如除以秒。它只需要除以30。您是否认为可以将30个文件保存到该特定文件夹中,并保持3个和10个文件夹不变。再次非常感谢,你没有意识到这将节省多少时间机械文件夹30包含30 jpg的解决方案传奇,非常感谢你的专业知识:):)工程像一个梦想!!
@echo off
:: get total number of files
for /f %%A in ('dir /b *.jpg ^| find /v /c ""') do set /A total=%%A
:: create subfolders and calculate skip
for %%A in (3 10 30) Do (
mkdir "%%A"
if %%A neq 30 (
Set /A "skip%%A=total/25/%%A
) Else (
Set /A "skip%%A=total/%%A
)
)
set Counter=0
for %%f in (*.jpg) do call :p "%%f"
goto :EOF
:p
set /a "Counter+=1,X=Counter%%skip3,Y=Counter%%skip10,Z=Counter%%skip30"
if %X%==0 copy %1 "3"
if %Y%==0 copy %1 "10"
if %Z%==0 copy %1 "30"
goto :eof
@echo off
:MainLoop {
cls
setlocal enabledelayedexpansion
set fileCount=0
set /p "duration=Seconds: "
set /p "interval=Files to skip: "
mkdir "%duration%"
for %%f in (*.jpg) do (
set /a fileCount+=1
set /a frame=fileCount%%interval
if !frame! == 0 (
copy "%%f" "%duration%"
)
)
pause
endlocal
goto :MainLoop
}