gpt4 book ai didi

batch-file - 我需要脚本来处理所有 dav 文件

转载 作者:行者123 更新时间:2023-12-04 23:23:31 24 4
gpt4 key购买 nike

脚本应该以递归模式运行,查找 DAV 文件并使用 FFMPEG 启动 DAV 到 JPG 的转换。该脚本正在工作,识别文件夹中的文件并在 DAV 文件存在时开始转换,但忽略了一些 DAV 文件。
当我将这些 DAV 文件放回文件夹时,它会正确转换。
有什么问题?
我认为这可能是过程的速度,因为文件是在文件夹中生成的,脚本必须等待文件关闭并完成才能执行。我尝试使用 PING 将转换过程延迟 15 秒,但它仍然会跳过一些文件。

cd E:\VM01\1002
MD "E:\COLETA SNAPSHOT\SNAPSHOT 1002"
MD "E:\COLETA SNAPSHOT\PROCESSED 1002"

:LOOP01
PING 1.1.1.1 -n 10 -w 6000 >NUL
For /R %%G in (*.Dav) do IF NOT EXIST "%%G" GOTO SKIP01

:LOOP02
PING 1.1.1.1 -n 10 -w 6000 >NUL
For /R %%G in (*.Dav) do IF EXIST "%%G" GOTO SKIP02
REM ALL THIS WILL BE DONE IF THE DAV FILE EXISTS
:
:
:SKIP01
REM 6 SECONDS OF DELAY ...
PING 1.1.1.1 -n 10 -w 6000 >NUL
GOTO LOOP01
:
:
:SKIP02
REM START CONVERSION
PING 1.1.1.1 -n 10 -w 15000 >NUL
For /R %%G in (*.Dav) do IF EXIST "%%G" ffmpeg -i "%%G" -r 0.2 -bt 20M -s 480x300 "%%~nG"%%06d.jpg
for /r %%G in (*.Dav) do Move "%%G" "E:\COLETA SNAPSHOT\PROCESSED 1002"
Move "*.jpg" "E:\COLETA SNAPSHOT\SNAPSHOT 1002"
PING 1.1.1.1 -n 10 -w 3000 >NUL
)
GOTO LOOP01

最佳答案

我已经重写了你的脚本,以我认为你发布的示例应该的方式工作,并且取决于你在 上运行它。或更新:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "DavTree=E:\VM01\1002"
Set "DavDone=E:\COLETA SNAPSHOT\PROCESSED 1002"
Set "JpgDone=E:\COLETA SNAPSHOT\SNAPSHOT 1002"
CD /D "%DavTree%" || "%__AppDir__%timeout.exe" /T 3 1>NUL & GoTo :EOF
If Not Exist "%DavDone%\" MD "%DavDone%" || "%__AppDir__%timeout.exe" /T 3 1>NUL & GoTo :EOF
If Not Exist "%JpgDone%\" MD "%JpgDone%" || "%__AppDir__%timeout.exe" /T 3 1>NUL & GoTo :EOF

:ProcessDavs
"%__AppDir__%where.exe" /Q /R . *.Dav
If ErrorLevel 1 "%__AppDir__%timeout.exe" /T 6 1>NUL & GoTo ProcessDavs
For /F "Delims=" %%# In ('Dir /B /S /A:-D-S-L /O:D /T:W *.Dav') Do (
"%__AppDir__%timeout.exe" /T 3 1>NUL
"F:\ull\PathTo\FFmpeg.exe" -i "%%#" -r 0.2 -bt 20M -s 480x300 "%%~n#%%06d.jpg"
If Not ErrorLevel 1 (Move /Y "%%#" "%DavDone%" 1>NUL
Move /Y "%%~n#%%06d.jpg" "%JpgDone%" 1>NUL))
GoTo ProcessDavs

请注意在线 15 , 我用过 "F:\ull\PathTo\FFmpeg.exe" ,请将此调整到正确的位置。如果位于 %PATH%E:\VM01\1002 ,您可以将其编辑为 FFmpeg.exe , 如果您的 %PATHEXT%变量未修改,您也可以删除 .exe , (我也不推荐)。我在评论中强调的问题不构成这个答案的一部分,但是,我已经安排了递归目录的命令,以便它选择最近最少写入的 .dav先存档。这可能会在处理之前为仍在写入的任何文件提供额外的时间来完成它们。您也可以调整 6第二 timeout在线 123第二 timeout在线 14必要时,如果问题仍然存在。

关于batch-file - 我需要脚本来处理所有 dav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com