1

何らかの理由で、C# で .cmd ファイルを起動して実行できないようです。cmd ファイルの行の例は次のとおりです。

"C:\Windows\system32\ffmpeg64.exe" -v verbose -y -i "S:\TEMP\A.ts" -c:v copy -c:a copy -ss 00:00:00.000 -t 2 "S:\TEMP\A_SHORT.ts"

このファイルを C# 内から起動する方法をいくつか試しました (curDirectory はたとえば "S:\TEMP" です)。

Process p = Process.Start(curDirectory + "\\ffmpeg.cmd");

私も試してみました

string path = curDirectory + "\\ffmpeg.cmd";
Process p = Process.Start("cmd.exe", @"/c " + path);  //I've also tried /k

しかし、ファイルがそこにあるにもかかわらず、cmd プロンプトが表示され、「C:\Windows\System32\ffmpeg64.exe」が認識されません ... と表示されます。

4

1 に答える 1

0

システムがWindows6.1カーネル以降を実行している場合、System32は、実行しているアプリケーションに基づいて、実際には他のディレクトリで構成されます(32ビットまたは64ビットのどちらのアプリケーションかによって異なります)。

これは64ビットアプリケーションであると想定してffmpeg64.exeおり、.cmdファイルを手動で実行すると、デフォルトで64ビットコマンドプロンプトが表示されます。また、アプリケーションが「x64」または「任意のCPU」をターゲットにしていることを確認してください。または、32ビットバージョンのffmpegをWoW64ディレクトリに配置することもできます。

また、コメントで.cmdファイルを読み取って変更したくないと述べていることは知っていますが、ハードコードされたパスの代わりにを使用してProcessStartInfo作成することもできます。Environment.SystemDirectory

最後のオプションとして、ffmpeg exeを静的な場所(コメントで述べたように、c:\作業中)に配置することも、アプリケーションの作業ディレクトリに配置することもできます。

于 2012-11-18T17:58:44.780 に答える