ffmpeg可以调整视频/图像文件的大小..首先是input_file ..参数.. output_file ..
ffmpeg -i input.avi -vf scale=320:240 output.avi
或
ffmpeg -i 20140724_071746.mp4 -vf scale=640:-1 20140724_071746_LOW_640.mp4
此处有更多信息:https://trac.ffmpeg.org/wiki/Scaling%20%28resizing%29%20with%20ffmpeg
我希望它缩小我的microSD卡上的所有视频以创建空间(我有原件备份)
所以我希望它能在一夜之间抛出所有子目录中的所有文件并调整所有文件的大小。有可能脚本可能会停止或崩溃,我需要再次运行它,或者如果我添加新文件,我会想再次运行它。
所以我希望它跳过处理所有已处理的文件及其调整大小的版本。
在我的情况下,如果FILE_NAME.mp4
也有FILE_NAME_LOW_640.mp4
SKIP它
和
如果FILE_NAME_LOW_640.mp4
有*640
跳过它
到目前为止,这是我的Windows批处理脚本
REM @echo off
REM just save as "DOS"
REM cd /d C:\s
setlocal enabledelayedexpansion
for %%j in (*.mp4) do (
set filename=%%~nj
echo %%j
ffmpeg -i %%j -vf scale=640:-1 %%j_LOW_640.mp4
REM but now I want to add the two checks to skip files that have been resized .. or if they are the resized version
REM if not "!filename!"=="%%j_LOW_640.mp4" AND IF FILE !COINTAIN *640* THEN ffmpeg -i %%j -vf scale=640:-1 %%j_LOW_640.mp4
)
pause
REM AND I would also want it to process all the sub-directories
换句话说,我的帮助问题是:
如果字符串包含字符串匹配,如何检查字符串?
如何让我的脚本也处理所有子目录?
答案 0 :(得分:0)
for /f "delims=" %A in ('dir /b /s c:\somewhere\*.mp4') do (findstr /c:"_640" %A || Echo ffeg etc %A)
||
表示如果findstr
返回错误级别不为0,则运行命令,如果找不到该字符串,则返回错误级别。 /s
中的dir
会执行子文件夹。
批量使用%%A
,输入时使用%A
。
请参阅Novice Batch Issue- Creating Files以获取命令标点符号列表。
一个vbs脚本走在树上。在命令提示符cscript //nologo "c:\some path\script.vbs"
中使用cscript运行它。更改计算机的起始文件夹(替换c:\users\david candy\documents
)。
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
ProcessFolder "c:\users\david candy\documents"
Sub ProcessFolder(FolderPath)
Set fldr = fso.GetFolder(FolderPath)
Set Fls = fldr.files
For Each thing in Fls
wscript.echo thing.name
Next
Set fldrs = fldr.subfolders
For Each thing in fldrs
wscript.echo thing.name
ProcessFolder thing.path
Next
End Sub
答案 1 :(得分:0)
我希望这个方法足够简单,所以不需要解释。您可以在HELP FOR
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in ('dir /S /B *.mp4') do (
set "name=%%~Na"
if "!name:~-3!" neq "640" if not exist "%%~DPNa_LOW_640.mp4" (
ffmpeg -i "%%a" -vf scale=640:-1 "%%~DPNa_LOW_640.mp4"
)
)