进一步阅读:

进一步阅读:

我安装了 8 个声卡,并尝试创建 dos 代码来将所有声卡的确切名称虚拟回显到文本文件中。但ffmpeg不会将输出回显到文件中。

这是我尝试过的但没有达到预期的效果:

ffmpeg -list_devices true -f dshow -i dummy>>SoundCardName%batnum%.txt

它只是列出。

此外,这不起作用,只列出第一个声卡:

@For /f tokens^=1^,2delims^=^" %%a in (
'ffmpeg -list_devices true -f dshow -i dummy 2^>^&1 ^| findstr /c:"audio"'
) do (
   if not defined AudioDevice (
      set "AudioDevice=%%~b"
      Echo "%AudioDevice%">>SoundCardName%batnum%.txt

   )
)

我需要列出的所有 8 张声卡。

我不知道这是什么2^>^&1意思。

我不知道| findstr /c:"audio"'是什么。我总是将管道视为应该是或的东西,但更有可能是管道连接到某个东西,在这种情况下,我不知道。

无论如何。为什么我不能简单地>>将输出内容显示到 DOS 框中的文件中?

答案1

@echo off & cd /d "%~dp0"

set "_cnt=1"
set "_ffmpeg=C:\Program Files\ffmepg\bin\ffmpeg.exe"
set "_arg=-hide_banner -list_devices true -f dshow -i dummy"

for /l %%L in (01,01,0%_cnt%)do if defined _AuDev_%%~L 1>nul =;(
     set "_AuDev_%%~L=" & del /q /f /a "AuDev_%%~L.txt" 2>&1 );=

for /f usebacktokens^=2delims^=^" %%i in (`^<con: 2^>^&1 ^<nul ^
     "%_ffmpeg%" %_arg% ^| %__AppDir__%findstr.exe /e .*audio^)`
     )do call set "_AuDev_%%_cnt%%=%%~i" & call set /a "_cnt+=1"

  • 或者,如果您想在运行时列出文件名和内容:
@echo off & cd /d "%~dp0"

set "_cnt=1"
set "_ffmpeg=C:\Program Files\ffmepg\bin\ffmpeg.exe"
set "_arg=-hide_banner -list_devices true -f dshow -i dummy"

for /l %%L in (01,01,0%_cnt%)do if defined _AuDev_%%~L 1>nul =;(
     set "_AuDev_%%~L=" & del /q /f /a "AuDev_%%~L.txt" 2>&1 );=

for /f usebacktokens^=2delims^=^" %%i in (`^<con: 2^>^&1 ^<nul ^
     "%_ffmpeg%" %_arg% ^| %__AppDir__%findstr.exe /e .*audio^)`
     )do call set "_AuDev_%%_cnt%%=%%~i" & call set /a "_cnt+=1"

for /l %%L in (01,01,0%_cnt%)do @if defined _AuDev_%%~L 2>&1 =;(
     %ComSpec% /v /c "echo\!_AuDev_%%~L!>.\"AuDev_%%~L.txt"" );=
 
for /f useback^tokens^=*delims^= %%i in (`dir /b /on AuDev_*.txt
    `)do cd.| set /p "'=File: .\%%~nxi # Device: " & type "%%~i"
  • 输出:
File: .\AuDev_1.txt # Device: Microfone (Conexant SmartAudio HD)
File: .\AuDev_2.txt # Device: CABLE Output (VB-Audio Virtual Cable)

进一步阅读:

相关内容