Вам нужно использовать FOR для перебора элементов, с которыми вы хотите работать. Подробности смотрите в разделе Как перебирать файлы, соответствующие шаблону в пакетном файле .
Как только вы решите эту часть, вы захотите создать имя файла вашего .txt файла. Документация командной строки FOR может помочь нам здесь:
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:
    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
Последняя запись - это то, что мы хотим. Мы хотим отрезать .avi , поэтому мы используем ~n в нашей переменной, чтобы получить только имя. Отсюда и происходит %%~nf.txt .
Начнем с %%f , текущего имени файла. Затем мы обрезаем расширение с помощью %%~nf и добавляем .txt ... Готово: %%~nf.txt 
Последняя проблема, когда вы пытаетесь решить все это в одной строке, например:
FOR %%f IN (*.avi) DO ECHO HAPPY > %%~nf.txt
Это не сработает, потому что оболочка интерпретирует > и сразу начнет выводить в этот файл, а это не то, что нам нужно. Мы хотим, чтобы ECHO обрабатывался для каждого файла, поэтому я просто разделил его на несколько строк.
@ECHO OFF
REM Iterate over all *.avi file in the current directory
FOR %%f IN (*.avi) DO (
    REM Cut off the extension from %%f, tack on .txt and 
    REM use it as the filename for our HAPPY output
    ECHO HAPPY > %%~nf.txt
)