我做错了什么

时间:2016-08-26 09:24:31

标签: batch-file sox

这是批次

for /f "skip=9 tokens=1-3" %%x in ('sox.exe Heavyrainambienc2801.wav -n stat') do (
  if "%%x %%y"=="Maximum delta:" set maxDelta=%%z
)
echo %maxDelta%

而不是最大增量值I得到空白回声

Samples read:          11832320
Length (seconds):    123.253333
Scaled by:         2147483647.0
Maximum amplitude:     0.999939
Minimum amplitude:    -0.999969
Midline amplitude:    -0.000015
Mean    norm:          0.488960
Mean    amplitude:    -0.000082
RMS     amplitude:     0.570900
Maximum delta:         1.999878
Minimum delta:         0.000000
Mean    delta:         0.651948
RMS     delta:         0.807396
Rough   frequency:        10804
Volume adjustment:        1.000

Try: -t raw -e mu-law -b 8

C:\1>echo
ECHO is on.

我不确定这很重要,但它在Windows 10上运行

1 个答案:

答案 0 :(得分:0)

我不确定错误是什么,但有一个解决方法: 将您正在使用的命令的输出放在文本文档中并从那里读取。这对我有用。

我直接将文本块复制到文件中进行测试;如果还有其他内容,您可能需要检查%% x和%% y是否为所需值。如果不是,你知道在哪里仔细看看:)

在批处理脚本结束时,您只需删除该文件即可。

@echo off
sox.exe Heavyrainambienc2801.wav -n stat 2>output.txt
for /f "skip=9 tokens=1-3" %%x in (output.txt) do (
if "%%x %%y"=="Maximum delta:" set maxDelta=%%z
)
echo %maxDelta%
del output.txt
pause