我安装了 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)
进一步阅读:
-
|
,<
,>
,2>
,2>&1
, ETC。