2

.NET アプリケーションからシェル スクリプト (.cmd) を開始しています。スクリプトが完了した後もコンソール ウィンドウを開いたままにして、エラーをチェックできるようにしたいと思います。で試してcmd.exe /K:my.cmdいますが、何らかの理由で機能しません (スクリプトが実行されません)。単純な「dir」コマンドでさえ機能しません。他のアイデアはありますか?

実証するために、これは:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo()
{
    Arguments = "/K:dir",
    ErrorDialog = true,
    FileName = "cmd.exe",
    WorkingDirectory = @"C:\"
});

私にこれを与えます:

C:\>

明確化の追加:私のアプリケーション (スクリプトを開始するアプリケーション) は、Windows フォームアプリケーションです。上記のコードを実行すると、新しいコンソール ウィンドウが開きます (当然のことです)。その新しいコンソール ウィンドウを開いたままにしておきます。また、スクリプトを変更することはできません。これは自動化されたビルド スクリプトであり、終了する必要があります。

4

4 に答える 4

2

これがすべての問題かどうかはわかりませんが、 を実行cmd /K:dirしても何も実行されません。コロンの代わりにスペースを使用すると、うまくいきます。

つまり、cmd /K dir


実行ダイアログでこれらのコマンドをテストできることも注目に値します。最近の Windows バージョンでは、これを押したままWinを押すことで実行できますR

于 2012-01-12T13:57:47.330 に答える
1

コマンドをバッチ (.bat) ファイルに配置し、バッチ ファイル内の最後のコマンドを "一時停止" (引用符なし) にすることができます。次に、cmd を実行する代わりに、代わりにバッチ ファイルを実行します。

サンプル バッチ ファイル - test.bat

一時停止

結果をテキスト ファイルに出力し、アプリケーション内でテキスト ファイルを表示することもできます。

DIR >results.txt
于 2012-01-12T13:57:27.610 に答える
1

例からコロンを削除します。

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo()
{
  Arguments = "/K dir",
  ErrorDialog = true,
  FileName = "cmd.exe",
  WorkingDirectory = @"C:\"
});
于 2012-01-12T13:58:08.063 に答える
0

ウィンドウを開いたままにするのではなく、エラーをファイルに記録します。.net コンソール ウィンドウを開いたままにするには

Console.ReadLine();

最後まで、ユーザーは Enter キーを押して続行する必要があります。Console.ReadKey()任意のキーを使用することもできます

プロセス ウィンドウを開いたままにしておく場合のコマンドは次のとおりです。pause

于 2012-01-12T13:57:47.017 に答える