在可执行文件上模拟拖放文件?
Mimic dragging and dropping file over executable?
我在 Windows 中使用了一个名为“Levelator”的免费程序来规范化 WAV 文件中的音频,它不仅规范化了整个 WAV 文件 - 它使安静的声音变大,大声的声音变小,所以输出文件始终是相同的体积。如果有任何其他免费工具可以做到这一点(并且可以在命令行上做到这一点),我会使用它,但我从来没有发现任何其他东西可以做到这一点。
当此 Levelator 程序为 运行 时,它会打开一个 GUI。要处理 WAV 文件,只需将 WAV 文件拖到 GUI 上,它就会生成原始“.wav”文件的“.output.wav”版本。您还可以将 WAV 文件拖到 Levelator 的可执行文件上(没有 运行ning Levelator)并以这种方式获取输出文件。
您不能以任何方式在命令行上使用它!
我尝试过的任何东西都无法在批处理文件中运行,例如:
start /wait Levelator.exe myaudio.wav
或带引号:
start /wait Levelator.exe "myaudio.wav"
导致错误:“无法打开源文件:myaudio.wav”
此外,运行宁这什么也没带来:
Levelator.exe /?
这只会导致相同的错误:“无法打开源文件:/?”
我开始思考这个问题并想知道,如果您可以将 WAV 文件拖到可执行文件上,为什么不能在批处理文件中处理?如果上面的第一个命令不起作用,为什么不呢?为什么您被迫将 WAV 文件拖到 GUI 上或将 WAV 拖到可执行文件上?
奇怪的是程序无法通过在批处理文件中指定文件名在Levelator.exe后打开WAV文件。好像做不到。
这很令人沮丧,因为我总是必须在 GUI 上手动拖动 WAV 文件,但是使用批处理文件(并为任何 WAV 的名称创建一个变量)会容易得多。
由于这在批处理文件中不起作用,我如何在命令行上模拟拖放操作?这是唯一的方法。我通常会使用 AutoIt2 来做这种事情,但是无法猜测 WAV 文件在文件夹中的位置,所以也不能那样做,AutoIt2 不是那么先进,需要 window 坐标拖到某处。
我知道这是一项艰巨的任务,这就是我在这里问的原因:p
编辑:用户 14122392 的建议使其生效:)
我将以下内容放在 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 /?
。
我在 Windows 中使用了一个名为“Levelator”的免费程序来规范化 WAV 文件中的音频,它不仅规范化了整个 WAV 文件 - 它使安静的声音变大,大声的声音变小,所以输出文件始终是相同的体积。如果有任何其他免费工具可以做到这一点(并且可以在命令行上做到这一点),我会使用它,但我从来没有发现任何其他东西可以做到这一点。
当此 Levelator 程序为 运行 时,它会打开一个 GUI。要处理 WAV 文件,只需将 WAV 文件拖到 GUI 上,它就会生成原始“.wav”文件的“.output.wav”版本。您还可以将 WAV 文件拖到 Levelator 的可执行文件上(没有 运行ning Levelator)并以这种方式获取输出文件。
您不能以任何方式在命令行上使用它!
我尝试过的任何东西都无法在批处理文件中运行,例如:
start /wait Levelator.exe myaudio.wav
或带引号:
start /wait Levelator.exe "myaudio.wav"
导致错误:“无法打开源文件:myaudio.wav”
此外,运行宁这什么也没带来:
Levelator.exe /?
这只会导致相同的错误:“无法打开源文件:/?”
我开始思考这个问题并想知道,如果您可以将 WAV 文件拖到可执行文件上,为什么不能在批处理文件中处理?如果上面的第一个命令不起作用,为什么不呢?为什么您被迫将 WAV 文件拖到 GUI 上或将 WAV 拖到可执行文件上?
奇怪的是程序无法通过在批处理文件中指定文件名在Levelator.exe后打开WAV文件。好像做不到。
这很令人沮丧,因为我总是必须在 GUI 上手动拖动 WAV 文件,但是使用批处理文件(并为任何 WAV 的名称创建一个变量)会容易得多。
由于这在批处理文件中不起作用,我如何在命令行上模拟拖放操作?这是唯一的方法。我通常会使用 AutoIt2 来做这种事情,但是无法猜测 WAV 文件在文件夹中的位置,所以也不能那样做,AutoIt2 不是那么先进,需要 window 坐标拖到某处。
我知道这是一项艰巨的任务,这就是我在这里问的原因:p
编辑:用户 14122392 的建议使其生效:)
我将以下内容放在 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 /?
。