Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Обработка файлов в папках при перетаскивании на BAT (http://forum.oszone.net/showthread.php?t=343248)

TRaMeLL 11-12-2019 19:06 2899990

Обработка файлов в папках при перетаскивании на BAT
 
Добрый день! Есть BAT файл следующего содержания:
Код:

SET ffmpeg=C:\Program Files (x86)\H.264 Encoder\ffmpeg.exe
ECHO Processing: "%~1"
:LOOP
IF "%~1"=="" GOTO :END
"%ffmpeg%" -i "%~1" -c:a copy -vn "%~1.m4a"
del "%~1"
ren "%~1.m4a" "*."
SHIFT
GOTO :LOOP
:END

На данный момент работает так: кладем BAT в папку с файлами, выделяем файлы, перетаскиваем на BAT файл. Всё работает, но хотелось бы чтобы работало и с файлами в папках (т. е. чтобы можно было перетащить на BAT файл папку с вложенными папками и файлами). Можно это реализовать?

megaloman 11-12-2019 20:49 2900005

Цитата:

Цитата TRaMeLL
кладем BAT в папку с файлами »

Скрипт может быть где угодно. Этого делать не надо. Пропишите расширение для Ваших обрабатываемых файлов вместо txt. Set "Ext=txt"
Я не мог полноценно отладить скрипт с Вашими программами, поэтому в выделенных строках надо убрать Echo для боевой работы - я их тупо переписал у Вас.
На скрипт можете перетаскивать файлы, папки, их смесь. Папки обрабатываются с подпапками.
Код:

@Echo Off
cls
        Set "ffmpeg=C:\Program Files (x86)\H.264 Encoder\ffmpeg.exe"
        Set "Ext=txt"

        If "%~1"=="" (Echo No Arguments &Pause &Exit /B 2)
        FOR %%f In (%*) DO (
                If Exist "%%~f\" (
                        Echo Папка "%%~f"
                        For /F "usebackq delims=" %%i In (`2^>nul Dir /B /S /A:-D "%%~f"`) Do Call :DoFile "%%i"
                ) Else (
                        If Exist "%%~f" (
                                Call :DoFile "%%~f"
                        ) Else (
                                Echo Файл или папка не найдены "%%~f"
                        )
                )
        )
pause
Exit /B 0

:DoFile
        If /I Not ".%Ext%"=="%~x1" Exit /B 1
        Echo Обрабатываем файл "%~1"

        Echo "%ffmpeg%" -i "%~1" -c:a copy -vn "%~1.m4a"
        Echo del "%~1"
        Echo ren "%~1.m4a" "*."
Exit /B 0



Время: 23:28.

Время: 23:28.
© OSzone.net 2001-