这里是新的,希望这是一个简单的问题。我在编程和脚本编写方面的背景很少,但是到目前为止,我的基础知识都还不错,我被困住了。
我试图完成标有我需要帮助的部分的逻辑;
现在,扫描并找到最大的文件,然后将其发送进行处理并将其移回,可以完美地工作。我要添加的是在大小扫描过程中检查Processed.txt文件,因为即使压缩后,最大的文件通常还是最终仍然是最大的文件(因此它卡在了同一个文件上)。基本上,我希望能够无休止地扫描最大的未处理文件并将其一一压缩。 (我有数千个,因此典型的批处理将无法正常工作)
我试图找出如何使findstr进入for \ do循环,但我对此一无所知。我的想法是采用当前的%name%变量,通过Processstr.txt文件上的findstr运行它,如果匹配则继续前进,如果没有,则使其成为当前最大的文件。
到目前为止,这是我一直在努力的工作,我已经设法与其他帖子拼凑起来;
SETLOCAL EnableDelayedExpansion
set tes=0
set name=
set path=
for /r D:\Cameras %%h in (*.*) do (
IF !tes! LSS %%~zh (
SET tes=%%~zh
SET name=%%~nh
SET path=%%~ph
SET ext=%%~xh
)
)
move "d:%path%%name%%ext%" "d:\Working\"
HandBrakeCLI -i "d:\Working\%name%%ext%" -o "c:\Completed\%name%.mp4" -O -e x264 -q 23 -B 128 -w 720 -l 480 --auto-anamorphic
move "c:\Completed\%name%.mp4" "d:%path%%name%.mp4"
del "d:\Working\%name%%ext%"
echo !name! >> Processed.txt
在此先感谢您,所有帮助都将不胜感激。
*****编辑更新***** 因此,我无法满足以下要求,但它带给我了一个新的方向。现在,下面的代码似乎很接近工作,但是第二个FOR DO IF似乎在主循环之外进行处理。也许有人可以帮助解决此问题,因为这是我认为对我有用的逻辑。
我会删除我所知道的仅用于测试是否进行扫描的内容,输入文件名,然后在下次进行测试时将其跳过。
rem :start
SETLOCAL EnableDelayedExpansion
set tes=0
set name=
set path=
set found=false
for /r d:\Cameras %%h in (*.*) do (
rem CALL :checkprocessed %%h
for /f %%x in (d:\Processed.txt) do (
IF "%%~nh" NEQ "%%~x" IF !tes! LSS %%~zh (
echo !tes! %%~zh %found% >> ifcheck.txt
SET tes=%%~zh
SET name=%%~nh
SET path=%%~ph
SET ext=%%~xh
)
)
)
rem move "d:%path%%name%%ext%" "d:\Working\"
rem HandBrakeCLI -i "d:\Working\%name%%ext%" -o "c:\Completed\%name%.mp4" -O -e x264 -q 23 -B 128 -w 720 -l 480 --auto-anamorphic
rem move "c:\Completed\%name%.mp4" "d:%path%%name%.mp4"
rem del "d:\Working\%name%%ext%"
echo !name! >> Processed.txt
rem goto :start
rem :checkprocessed
rem SET found=false
rem for /f %%x in (d:\Processed.txt) do IF "%%~nh" EQU "%%~x" (SET found=true & echo !found! >> found.txt & exit /b 0)
rem exit /b 0
答案 0 :(得分:0)
首先,我要感谢@jwdonahue在此方面提供的所有帮助和时间。反复研究想法,我能够使脚本完美地工作!如果有人需要,下面是工作脚本。我也从其他用户评论中修复了该路径。谢谢大家的帮助!
:start
SETLOCAL EnableDelayedExpansion
set tes=0
set name=
set _path=
set ext=
set _found=false
for /r d:\Cameras %%h in (*.*) do (
for /f %%x in (d:\Processed.txt) do ( IF "%%~nh" EQU "%%~x" ( set _found=true) )
IF !_found! EQU false IF !tes! LSS %%~zh (
SET tes=%%~zh
SET name=%%~nh
SET _path=%%~ph
SET ext=%%~xh
)
set _found=false
)
move "d:%_path%%name%%ext%" "d:\Working\"
HandBrakeCLI -i "d:\Working\%name%%ext%" -o "c:\Completed\%name%.mp4" -O -e x264 -q 23 -B 128 -w 720 -l 480 --auto-anamorphic
move "c:\Completed\%name%.mp4" "d:%_path%%name%.mp4"
echo !name! >> Processed.txt
echo !_path!,!name!!ext!,!tes! >> OrgSize.log
del "d:\Working\%name%%ext%"
goto :start