コードからコマンド実行する

command.png

C++11流

#include <cstdlib>
#include <fstream>
#include <iostream>
std::system("dir >test.txt");//dir ディレクトリを見るコマンドの結果をtest.txtに出力して流し込む
std::cout << std::ifstream("test.txt").rdbuf();//プログラム内で読み込む

C++11以前
#include <stdlib.h>
system("コマンド名");
#include <windows.h>
ShellExecute("コマンド名");

実行する外部コマンドの出力をプログラムで取得したい場合は、
pipe()とdup()を使って、fork()する方法もありますが、
popen()を使うとより簡単に書けます。

system関数から返ってくるintの値は、main関数からreturn された値です。
0なら正常終了、0以外なら異常終了です。

ファイルの移動

rename ファイル名 フォルダ名/ファイル名

コマンド実行した結果を得るには?

Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe","-get t"};
Process proc = rt.exec(commands);
 
BufferedReader stdInput = new BufferedReader(new 
     InputStreamReader(proc.getInputStream()));
 
BufferedReader stdError = new BufferedReader(new 
     InputStreamReader(proc.getErrorStream()));
 
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
}
 
// コマンドの使い方が間違ってるとかのエラーがでてたらここに出力される
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
    System.out.println(s);
}

ファイルに書き込むコマンド

echo 内容 > ファイル名

catで確認しよう

cat ファイル名


commandlinetool main

サポートサイト Wikidot.com commandlinetoolmain