问题描述
我在Windows中使用一个名为“ Levelator”的免费程序对WAV文件中的音频进行规范化,它不仅仅对整个WAV文件进行规范化-它使安静的声音变得越来越响亮,因此输出文件都一样整个量。如果有其他免费工具可以执行此操作(并且可以在命令行上执行),那么我会使用它,但是我再也找不到其他可以执行此操作的工具。
运行此Levelator程序时,它将打开一个GUI。要处理WAV文件,只需将WAV文件拖到GUI上,它会吐出原始“ .wav”文件的“ .output.wav”版本。您也可以将WAV文件拖动到Levelator的可执行文件上(不运行Levelator),并以这种方式获取输出文件。
您无法做的是在命令行中以任何方式使用它!
start /wait Levelator.exe myaudio.wav
或带引号:
start /wait Levelator.exe "myaudio.wav"
此外,运行此命令不会带来任何结果:
Levelator.exe /?
我开始考虑这个问题,并且想知道是否可以将WAV文件拖到可执行文件上,为什么不能在批处理文件中处理呢?如果上面的第一个命令不起作用,为什么不呢?为什么要强迫将WAV文件拖到GUI上或将WAV拖到可执行文件上?
奇怪的是,该程序无法通过在批处理文件中的Levelator.exe之后指定文件名来打开WAV文件。似乎不可能做到。
令人沮丧的是,我总是必须在GUI上手动拖动WAV文件,但是使用批处理文件(并为任何WAV的名称创建变量)会容易得多。
由于这在批处理文件中不起作用,如何模拟命令行上的拖放操作?这是唯一的方法。我通常会使用AutoIt2进行此类操作,但无法猜测WAV文件在文件夹中的位置,因此也无法通过这种方式完成,AutoIt2的功能还不够先进,需要窗口坐标将某物拖到某处。
编辑:user14122392的建议导致其起作用:)
我将以下内容放在Levelator.exe和WAV文件旁边的批处理文件中,希望它已成为通用文件,因此不需要编辑,只要将WAV文件放在其中就可以运行...
For %%a IN ("*.wav") DO Set "WAVFILE=%%~na"
start /wait levelator.exe "%~dp0\%WAVFILE%.wav"
这允许使用任何文件名的WAV文件(不确定带有“!”字符的文件名,我知道Levelator不喜欢它们),通过使用“%〜dp0”足以使它工作
解决方法
"C:\Folder\Levelator.exe" "C:\Folder\myaudio.wav"
拖动时,Windows使用完整路径,因此两个文件都被精确指定。用于启动程序的程序文件,然后程序确切知道在哪里寻找源文件。
start
也用于以异常方式启动程序。键入start /?
,以获取有关使用start
和正常启动程序的帮助。
!
在CMD中不是特殊字符,除非您打开特殊模式。它在MS-Dos中从来都不是特殊字符,因此您需要告诉CMD将其视为一个字符。参见setlocal /?
,set /?
和cmd /?
。