1

ビルドしたアプリケーションを実行してファイルに出力しようとしています。ただし、これを行うために必要なコマンド ライン引数で問題が発生しています。

これは、を使用した私の問題の例ですipconfig

次のコマンドが機能します。

ipconfig > output.txt

これによりファイルが作成されますが、ipconfig出力は入力されません。

start /D "C:\>WINDOWS\system32" ipconfig.exe > output.txt

の使用がこの問題を引き起こしていると思いますが、startよくわかりません。

解決

これは私のために問題を解決することができたコードです:

            char path[500]; // Create character array
            strcpy (path, "cd "); // Copy 'cd' into the array
            strcat (path, toolLocation); // Copy the path of the tool into the array
            strcat (path, " & ip.exe > output.txt"); // Append on the name of the exe and output to a file
            system (path); // Run the built array

文字配列を作成してから追加しています。ここで重要なの&は、システム コールで使用されていることです。これはand、.exe ファイルを実行する前に、ディレクトリへの最初の CD として機能します。

4

3 に答える 3

1

あなたのコマンドでは、は の出力ではなく>の出力をリダイレクトしています。これは、何も表示されない理由を説明しています。単に何も出力していないということです。startipconfigstart

質問へのコメントに基づいて、次のShellExecuteように目標を達成できます。

ShellExecute(
    0, 
    "open", 
    "cmd.exe", 
    "/C ipconfig > output.txt", 
    NULL, 
    SW_HIDE
);
于 2012-05-25T10:53:50.790 に答える
0

エラーは次のとおりです。

start /D "C:\>WINDOWS\system32" ipconfig.exe > output.txt

する必要があります

start /D "C:\WINDOWS\system32" ipconfig.exe > output.txt

>パスなしで。C:\>はプロンプトに表示されますが、これはパス名の一部でcmd.exeなく>、私の知る限りでは実際には無効です。

さらに、次を使用することを強くお勧めします。

start /D "%SystemRoot%\system32" ipconfig.exe > output.txt

さらに、 start は新しいコンソール (および new stderrand ) を作成するため、 not ofstdoutの出力をキャッチしています。だからあなたは使いたいかもしれません:startipconfig

pushd "%SystemRoot%\system32" & ipconfig.exe > output.txt & popd

ただし、管理者でない限り、ほとんどのシステムに書き込みoutput.txtを試みて失敗します。%SystemRoot%\system32したがって、絶対パスを指定するか、単純に crud を省略します。

ipconfig.exe > output.txt

ipconfig.exe 常にデフォルトのシステム変数にあるPATHため、管理者がシステムを「修正」していない限り機能します。その場合でも、次のことができます。

%SystemRoot%\system32\ipconfig.exe > output.txt
于 2012-05-25T12:35:16.297 に答える
0

というより、ディレクトリのstart移動に使ったほうがいいと思います。cd

このバッチファイルを試してください:

cd "C:\Program Files\Tools\2012"
ip.exe >output.txt

または、バッチを使用せずにコマンドラインのみを使用する場合:

"C:\Program Files\Tools\2012" ip.exe >output.txt" 

入ってsystem32いるPATHので、フルパスでipconfig exeにアクセスしている理由はわかりませんが、これは機能するはずです。

于 2012-05-25T11:07:21.290 に答える