MS-DOSプロンプトで dir と入力すれば、フォルダ内の
様子がMS-DOSプロンプトに表示されるけど、
C++ で、MS-DOSプロンプトで dir と入力したのと同じ
様にするにはどういうプログラムを作ればいいのですか?
別の言い方で書くと、実行すればMS-DOSプロンプトが
起動し、dir と入力されて dirコマンドが実行される
というファイルを作るソースが知りたいんです。
dirコマンドが実行される対象となるディレクトリは
どこでもいいんです。
C++ のプログラムでも、ディレクトリ構造を出力することが
出来ると思うんだけど、MS-DOSプロンプトでやってみたいんです。
どうしてそんなことがしたいのかというと、C++ が難しそうだから
という理由なんです。
例えば、ファイルコピーを自動化するプログラムを作る時、
C++ のプログラムの出力をMS-DOSプロンプトへ渡す方法を知っていれば、
MS-DOSプロンプトでのコピーは copy コピー元 コピー先
という簡単な書式だから、ファイルコピーを自動化するプログラムも
簡単に作れそうだなと思ったんです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Borland系であれば、



#include <stdlib.h>
#include <cstring.h>
int main(int, char** argv)
{
*argv++; // まず自分のプログラム名はパス
// 後々の独自の拡張を考えてMemcopy などは使わない
string s="dir ";
while (*argv) {
s += *argv++;
s += ' ';
}

system(s.c_str());
return 0;
}

#include <cstring.h>

#include <string>
が現在は本流。

この回答への補足

ソースをコンパイルして実行して、DIRの結果が表示されました。
短いけど難しいソースなんですねー。
MS-DOSプロンプトを使う原型が分かりました。
ありがとうございます。

補足日時:2001/03/17 23:50
    • good
    • 0
この回答へのお礼

ありがとうございます。
ソースを教えてもらえないと分からないんです。
教えていただいたソースはこの後試してみて
結果をまたここに書きます。

お礼日時:2001/03/17 07:53

質問の文章を読んでいて思ったのですが、


MS-DOSプロンプト=C言語
C++言語=Windowアプリ
と思ってやしませんか?

C++言語でコンソールアプリを書くこともできますよ。
且つ、VC++に関して言えば(VC++5では辛いけど)VC++6ではMFCを使ったコンソールアプリも簡単に出来ます。
    • good
    • 0

1.バッチファイル経由


DIRコマンドを記述したバッチファイルを作成
ShellExecuteなどで作成したバッチファイルを起動
(バッチファイルを動的に作ればどんな処理でも可能)

2.system()関数
Cの標準関数systen()にMS-DOSコマンドを引数で渡す
(MS-DOSプロンプトのウィンドウは表示されない)

3.command.comを直接起動
MS-DOSコマンドはcommand.comと言うプログラムが処理するのでcommand.comに直接コマンドを渡せば実行可能。
command.comはCreateProcess()で起動。

etc...
方法はいくらでもあります。

以下,老婆心ながら…
コピーならCopyFile(),ディレクトリリストならFindFirst()FindNext()FindClose()など便利なAPIがいっぱいあるのでそれを使って自前でウィンドウ描画した方がエラー処理とか楽です。
MD-DOSプロンプトでエラーが起こった時に対応するのは大事ですから。

この回答への補足

ありがとうございます。
でも、教えてくれたことが理解できず、ソースは作れませんでした。

補足日時:2001/03/15 23:06
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコマンドプロンプトのdelと削除ソフトについて

ファイルを強制的に削除するソフトがありますが、それはコマンドプロンプトで「del」コマンドを打ったものと同じ操作をするのでしょうか?
それと、ファイルを右クリックして「削除」するのと、コマンドプロンプト上から「del」コマンドにより削除するのは同じ動作でしょうか?
コマンドプロンプトからなら削除できないファイルが削除できると聞くので違うと思うのでですが?
ご存知あれば教えていただければ幸いです。

Aベストアンサー

全く自信なくて、私が勝手に思い込んでることだけど。
なので、回答と呼べるものとは言えないと思うけど、一応ね。(^.^)

>コマンドプロンプトからなら削除できないファイルが削除できると聞くので違うと思うのでですが?
これはほとんどが動画ファイルの付属情報の破損からだったと思う。
以前調べたものだと、エクスプローラーで対象のフォルダを開いたとき、動画ファイルの属性(だったかな?)の情報を取りにいって、そのままの状態を保持してしまい、ファイルを掴んじゃって削除できないってものだったと思う。
これは、そのフォルダを開くたびに掴みにいくから、エクスプローラーでは削除できない(だったとおもう)
つまり、エクスプローラーを介さずに、コマンドプロンプトから削除すれば、エクスプローラーがその破損情報を掴みにいかないので、ファイルがフリー状態になり削除が可能になる。(のかなぁ?)
ただ、上書きは可能なこと多いんだよなぁ~・・・。

とすると、最終的にOSへの削除命令伝達における命令が通る系統が違うんじゃないかなぁ~と個人的には思う。
つまり、エクスプローラーというシェルを使うのか使わないのかの違いじゃないかな?
もっとも、コマンドプロンプトで削除命令をエクスプローラー経由でOSに伝えてるかもしれないけど・・・ね。(^_^;)

全く自信なくて、私が勝手に思い込んでることだけど。
なので、回答と呼べるものとは言えないと思うけど、一応ね。(^.^)

>コマンドプロンプトからなら削除できないファイルが削除できると聞くので違うと思うのでですが?
これはほとんどが動画ファイルの付属情報の破損からだったと思う。
以前調べたものだと、エクスプローラーで対象のフォルダを開いたとき、動画ファイルの属性(だったかな?)の情報を取りにいって、そのままの状態を保持してしまい、ファイルを掴んじゃって削除できないってものだった...続きを読む

QC言語でMS-DOSプロンプト入力でプリンタに出力する方法は?

OS/Win98でVC++を使ってC言語を学習している初心者です.

C言語のプログラムでMS-DOSプロンプト上のコマンド入力において
プリンタに出力する方法を知りたいです.

たとえばMS-DOSプロンプト上で

C:>[プログラム名][ファイル名(XXX.txt)]

と入力すればプリンターにおいて、入力した[ファイル名(XXX.txt)]が
出力されるようなプログラムを作成したいです.
主にプログラムの流れをどのようにすれば良いか知りたいです.

宜しくお願いします.

Aベストアンサー

補足読みました...
 そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。

 全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。
----ここから
1.VC++のプロジェクトの新規作成を選択して、プロジェクトを作成する
 ヒント:沢山あるが、今回の様なプログラムでは、『Win32 Console Application』がお薦め、その後のチェックでは『MFCを使用する』が必須(楽をしたいなら)です。

2.コマンドラインパラメータを取得する
 ヒント:TCHAR* argv[], TCHAR* envp[]あたりを調べる

3.コマンドラインから取得したファイルを調べる
 ヒント:そのファイルが存在するかどうかが重要

4.プリンタのハンドルを作成する
 ヒント:CreateDC この時に、プリンタ名を使用するので、そのプリンタ名の取得がちょっとやっかい

5.コマンドラインからのファイルを開く
6.一行読込む
7.プリンタハンドルに一行書込む
 ヒント:TextOut
8.6-7を繰り返す(改頁等の処理が入るとちょっと面倒)
 ヒント:StartPage/EndPage
9.ファイルを閉じる
10.印刷を終わる
 ヒント:EndDoc
11.ハンドルを解放する
 ヒント:DeleteDC
12.プログラムを終了させる
----ここまで

 ヒントで、関数名になっている物は、その関数名で、ヘルプを検索すれば使用方法が出て来ます。
 ちょっと高いのですが、Windows95 APIバイブル1(9600円)を購入すれば、印刷の仕方が書かれています。参考になると思います。

補足読みました...
 そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。

 全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。
----ここから
1.VC++のプロジェクトの新規作成を選択して、プロジェクトを作成する
 ヒント:沢山あるが、今回の様なプログラムでは、『Win32 Console Application』がお薦め、その後のチェックでは『MFCを使用する』が必須(楽をしたいなら)です。

2.コマンドラインパラメ...続きを読む

Qコマンドプロンプトで、特定の文字を削除したい。

お世話になります。

コマンドプロンプトで、ファイル内の特定の文字を削除したいのですが、どのようにすればよいでしょうか。

deleteコマンドなど、ファイル自体を削除するものは見つけられたのですが、ファイル内の文字を消すコマンドが見つけることができませんでした。。。

Aベストアンサー

ファイルの中にコマンドプロンプトの特殊記号が含まれていないとすると、

del outfile.txt 2>NUL
for /f "usebackq delims=" %%A in (somefile.txt) do call :sub "%%A"
元のファイルを置き換えるなら move outfile.txt somefile.txt
goto :EOF
:sub
set A=%~1
>>outfile.txt echo %A:keshitaimojiretsu=%

元のファイルの中に含まれている内容が把握できる場合でないと危険です。
そうでないとすると、VBScript等できちんとやらないといけない。

QMS-DOSプロンプトの画面で:を出す方法

Meのリカバリに伴う作業でMS-DOSプロンプトの画面でA:>のあとに
DIR C:
と入力したい(ディレクトリの内容一覧)のですが、:
の出し方がわかりません。
どこのキーで出てくるのでしょうか。

Aベストアンサー

こんばんは
起動時にキーボードの種類は問われませんでしたか?
半角/全角を選択し、日本語キーボードを選択している場合は、通常の入力方法と同じはずです。
もし、英語キーボードを選択している場合は、確か”shift”+”;”だったと思います。
ウル覚えですみません。

Qscpコマンドでリモートサーバのファイルを削除したい

winscpでリモートサーバのファイル削除が出来るので、てっきりscpコマンドでオプションがあるのかと思ったのですが、見当たりません。scpコマンドでリモートファイルの削除は可能でしょうか?誰か教えて!

Aベストアンサー

1番の方と同じ意見ですが、
ssh ホスト名 コマンド
でリモートサーバ上でコマンドが実行できますので

ssh SSH_SERVER "rm testfile"

のように実行するの一般的かと。

QMS-DOS(コマンドプロンプト)の位置

C++なんですが、
実行途中にコマンドプロンプトで数値を入力して
描画をさせてるんですが、
描画範囲とコマンドプロンプトの位置が重なってしまい、
困っています。
C++でコマンドプロンプトの位置や大きさを指定することってできないのでしょうか?

Aベストアンサー

GetActiveWindow で「コマンドプロンプト」のウィンドウハンドルが取れるなら, それに対して何らかのメッセージを飛ばせば動かないかな?
いや, 単なる思いつきなんだけど.
でも, むしろ「だったら入力もダイアログボックスかなんか使って自前で全部処理しろ」の方が普通かも知んない.

Qコマンドプロンプトで完全削除

パソコンの中身を完全削除したいと思い、以前コマンドプロンプトでのやり方を教えてもらったのですが、「cipherは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルファイルとして認識されていません。」とメッセージが出ます。

どの様に削除すればいいのでしょうか?
詳しい方宜しくお願いします。

Aベストアンサー

エラー表示になります?。まず最初に再起動後、C・Dドライブのエラーチェックしてデフラグを実行して下さい。
それからコマンド入力します。それでもエラーが表示されれば、/の後ろのwを入れないで、/cで実行して下さい。
もし、それでも同じ症状なら、何らかのファイルが壊れていると思われますので、このやり方では削除は無理と考えて下さい。
フリーソフトでの削除をお願いします。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/file/del/

QMS-VisualC++:コンパイル後実行をするとDOS窓が一瞬だけ現れて消えるのをずっと表示させたいのですが。

cout << t << endl;

return 0;

}

単に変数を画面に表示させるだけのプログラムなのですが、Build後、実行すると一瞬DOS窓が立ち上がり表示された後すぐ消えてしまいます。この表示したDOS窓を持続させたいときはどうすればいいのでしょうか。おそらくものすごく基本的なことなのでしょうが、Linux上でしかC++をしてないのでわかりません。

Aベストアンサー

!マークのボタンを押して実行したら、

Press Any Key

って出てきて止まりませんでしたっけ?

Q~以外を削除する場合(rmコマンド)

linuxのコマンドで
~以外のファイル、ディレクトリを全て削除したい時は
どのような記述をすれば良いのでしょうか?
シェルスクリプトではなくrmコマンド1つで削除したのいですが…

例: tar以外のファイル・ディレクトリを
   すべて削除したい場合など

どなたかご存知の方がいらっしゃったら
教えてください。よろしくお願い致します。

Aベストアンサー

rm コマンドのみという訳にはいきませんが基本的なコマンドを組み合わせると実現可能と思います。

「名前が tar で終わるもの以外のファイル・ディレクトリを削除する」場合だと

ls | grep -v -E 'tar$' | xargs rm -r

となります。

ファイルの一覧を取得し ( ls )
'tar'で終わるもの以外を抽出し ( grep )
その結果を rm -r の引数に指定して実行 ( xargs )

という流れです。

ファイルを削除するような操作については失敗するとダメージが大きいので、事前にテストして動作を確認すると良いとおもいます。また rm -r -i としてそれぞれのファイルについて、削除の問い合わせをするのも有効です。

Q既存のCプログラムをMS Visual C++へ移行して実行したい

同じような質問がでていましたら、すみません。

いままでWS(unix)で作っていたC言語のプログラムをWindowsで実行しようと
しています。
Microsoft Visual C++ 6.0 Proを購入し、
新規でプロジェクトを作成するところで止まってしまいました。

「プログラムをコンパイルして、あるバイナリファイルを読み込み、
指定したファイルへ結果を書き込む」
という操作がしたいのですが、プロジェクトの種類はどれにすればいいのでしょうか?

また、ファイルを読み込む際、メインと関数は別のファイルになっているの
ですが、コンパイルはどのように指定すればいいのでしょうか?

もうひとつ、今までargv[]で入出力ファイルを指定していました。
# (メイン)(入力ファイル) (出力ファイル)のように
この処理はVC++でできるのでしょうか?

VC++の入門の本を購入したのですが、Cのプログラムについては
なかなか載っていないので困っています。
よろしくお願いします。

Aベストアンサー

> プロジェクトは出来たのですが、***.cppと、StdAfx.hというファイルが
> 出来ました。

VC6.0 は良く憶えてないのですが、プロジェクトを新規作成する過程で、MFC を
使う/使わないの選択がありましたか?

もしあれば、「使わない」としてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング