我在cmd的界面下,直接执行命令:
f:\Bepipe.exe --script "DirectShowSource(^f:\wav.avs^)" | f:\neroAacEnc.exe -bt 64 -if - -of "f:\outfile.mp4"
这个命令是可以正确的执行,bepipe命令行程序从wav.avs文件中读取,把数据喂给neroAacEnc.exe命令行程序,然后输出outfile.mp4
(这是调用neroaac编码器对音频编码的)但是我在gui程序中,
...
string bepipe = @"f:\BePipe.exe";
string bepipeArg = "--script \"DirectShowSource(^f:\\wav.avs^)\" | f:\\neroAacEnc.exe -br 64 -if - -of \"f:\\forthgui\\outfile.mp4\"";
Process.Start(bepipe, bepipeArg);
...
这样写,但执行起来时却跟在cmd下手动敲参数进去执行时完全不一样,执行总是失败...请问一下,在gui程序中应该怎么写那一串参数?
f:\Bepipe.exe --script "DirectShowSource(^f:\wav.avs^)" | f:\neroAacEnc.exe -bt 64 -if - -of "f:\outfile.mp4"
这个命令是可以正确的执行,bepipe命令行程序从wav.avs文件中读取,把数据喂给neroAacEnc.exe命令行程序,然后输出outfile.mp4
(这是调用neroaac编码器对音频编码的)但是我在gui程序中,
...
string bepipe = @"f:\BePipe.exe";
string bepipeArg = "--script \"DirectShowSource(^f:\\wav.avs^)\" | f:\\neroAacEnc.exe -br 64 -if - -of \"f:\\forthgui\\outfile.mp4\"";
Process.Start(bepipe, bepipeArg);
...
这样写,但执行起来时却跟在cmd下手动敲参数进去执行时完全不一样,执行总是失败...请问一下,在gui程序中应该怎么写那一串参数?
Process.Start(bepipe);
把文件名跟参数都写到一个字符串里,用Process.Start(string arg);执行。
根本就不识别那个字符串,Process.Start(string arg)只认定arg是文件名路径,执行时因为后边的参数多余引起不能识别文件名路径,调试时提示异常:找不到文件我所问的那个字符串参数,主要是从中间那一个"|"符号开始,貌似那之后的参数都无效了,调试时那后边的参数都没有执行
string bepipeArg = @"/c f:\BePipe.exe--script \"DirectShowSource(^f:\\wav.avs^)\" | f:\\neroAacEnc.exe -br 64 -if - -of \"f:\\forthgui\\outfile.mp4\"";
Process.Start(bepipe, bepipeArg);
string bepipeArg = @"/c f:\BePipe.exe--script \"DirectShowSource(^f:\\wav.avs^)\" | f:\\neroAacEnc.exe -br 64 -if - -of \"f:\\forthgui\\outfile.mp4\"";
Process.Start(bepipe, bepipeArg);
有问题你可以用这个简单的测试一下. string bepipe = "cmd.exe ";
string bepipeArg = @"/c dir c:\windows | more";
Process.Start(bepipe, bepipeArg);
果然行得通,绕开了直接用bepipe.exe启动的设置命令参数的问题。thanks wdgphc!我还想知道一点最开始我那么写的错误?
错在哪里?
虽然msdn上,按我那种方法写,在msdn上的用法简单来看,是没错的,不过我也不知道为何不行。