новенький здесь и надеюсь, что это простой вопрос.У меня очень мало опыта в программировании и написании сценариев, но у меня до сих пор работают основы, и я застрял.
Логика того, что я пытаюсь выполнить с помеченными частями, с которыми мне нужна помощь;
- сканирует папку IP-камеры для поиска самого большого файла
- нужна помощь проверить этот файл по списку уже обработанных файлов
- переместить этот файл во временную папку Рабочая папка на ПК с хорошим процессором и SSD
- запустить HandBrake на немчтобы сжать его
- переместить готовый файл обратно в исходное местоположение
- удалить оригинал из временного рабочего каталога
- записать его имя файла в Processed.txt
- нужна помощь Цикл всего этого для бесконечной работы
Сейчас он отлично работает для сканирования и поиска самого большого файла и отправки его для обработки и перемещения обратно.Я хочу добавить проверку файла Processed.txt во время сканирования по размеру, поскольку очень часто самые большие файлы остаются самыми большими даже после сжатия (поэтому он застревает на одном и том же).По сути, я хочу иметь возможность бесконечно сканировать самые большие необработанные файлы и сжимать их один за другим.(У меня ТЫСЯЧИ, так что типичная пакетная обработка на самом деле не сработает)
Я пытался понять, как включить findstr в цикл for \ do, но я полностью потерян на этом.Я думаю взять текущую переменную% name%, запустить ее через findstr в файле Processed.txt и, если она совпадает, переместиться, если не сделать этот текущий самый большой файл.
вот что я работаю до сих пор, что мне удалось собрать воедино из других постов;
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