←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.4514

system("cd /S 場所");についてです
投稿者---K(2005/08/23 07:50:56)


またまた質問ですm(__)m

作成したプログラムは基本的にそのプログラムがあるディレクトリーで作業するけど、作業ディレクトリーをC:\に変更する場合はどうすればいいですか??

system("cd /S \"c:\\\"");

これじゃ移動してくれません(>_<)

ちなみに*.bakなどの不要ファイルを削除するプログラムです(^^;)

C:\ にプログラムを置いて実行すれば問題ないですが、どこで実行してもうまくいくようにできますか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:system("cd /S 場所");についてです 4516 Blue 2005/08/23 08:38:00
<子記事> Re:system("cd /S 場所");についてです 4529 tetrapod 2005/08/23 15:25:39


No.4516

Re:system("cd /S 場所");についてです
投稿者---Blue(2005/08/23 08:38:00)


> system("cd /S \"c:\\\"");
/S っていうのあったっけ?( /D しかしらなんだけど。。。)

というか、system関数つかうんだったら、C言語使う意味あんまないような。
(ファイル削除や検索も、system関数使うのかなぁ。)

とりあえず、システム依存の処理はご自分の環境を明記しないと回答は付きにくいですよ。
OS、コンパイラ(バージョン、SP等)を明記してください。



この投稿にコメントする

削除パスワード

No.4517

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/23 09:00:04)


"/S" はサブフォルダのファイルも削除してくれます
・・・ゴメンなさいm(__)m"Del"と混ざってしまいました(^^;)

system・・・はい、ソースがかなり短くなります(^^;)
でも、今まではファイル検索で *.bak *.old *.tmp *.dmp *.chk
を検索してから削除していたので、検索時間を短縮するために作ってみたんです(^^;)実際にかなり短縮されました(^^)

WindowsXP Home Edition Ver2002 SP2
Borland C++ 5.5.1

です(^^)


この投稿にコメントする

削除パスワード

No.4519

Re:system("cd /S 場所");についてです
投稿者---Blue(2005/08/23 09:38:35)


結局できたのかなぁ?

system関数以外でWin32APIを使って、
ディレクトリ移動、ファイル検索、ファイル削除というのも出来ます。
(ファイル検索なんって再帰をつかうといいC言語の学習になります。)



この投稿にコメントする

削除パスワード

No.4520

Re:system("cd /S 場所");についてです
投稿者---かずま(2005/08/23 09:46:34)


> system・・・はい、ソースがかなり短くなります(^^;)
chdir("c:/"); のほうが短いと思います。
#include <direct.h> を使ってください。



この投稿にコメントする

削除パスワード

No.4526

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/23 14:50:28)


Blueさん
 投票した時点ではできてなかったけど、かずまさんの参考にしたらできました(^^)

 >system関数以外でWin32APIを使って
 コンパイラ(言語)の事ですよね??

 >ディレクトリ移動、ファイル検索、ファイル削除というのも出来ます。
 >(ファイル検索なんって再帰をつかうといいC言語の学習になります。)
 ディレクトリ移動のことはたぶんもう大丈夫です(^^)
 他は・・・関数を知らないと(^^;)
 質問ばっかりじゃ失礼かもしれないので・・・
 よかったら関数の勉強できるサイトを教えてもらえませんか?m(__)m


かずまさん
 >chdir("c:/"); のほうが短いと思います。
 確かに(^^;)
 知らないだけでした(>_<)

 >#include <direct.h> を使ってください。
 できました(^^)
 ありがとうございました(^^)


この投稿にコメントする

削除パスワード

No.4539

Re:system("cd /S 場所");についてです
投稿者---KING・王(2005/08/24 20:59:57)


> >system関数以外でWin32APIを使って
> コンパイラ(言語)の事ですよね??

???
コンパイラ(言語)ではありません。
関数の一種と考えてよかったと思います。
#正確にはどのように表現したらいいのかわかりかねます。
#識者のかた、フォローをお願いします。

それから、コンパイラと言語は同じではありませんが。。。
#というか、関係はするが、基本的に全く別物だと思う


この投稿にコメントする

削除パスワード

No.4547

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/25 20:48:05)


ありがとうございます(^^)
API
アプリケーションを作るための関数 ですか??

追加の質問です(^^;) もしだめなら新規スレたてますm(__)m
system("del")
これと同じような作業をしてくれる関数ってなんでしょうか?



この投稿にコメントする

削除パスワード

No.4549

Re:system("cd /S 場所");についてです
投稿者---まきじ(2005/08/25 21:09:38)


>system("del")
>これと同じような作業をしてくれる関数ってなんでしょうか?

ファイルを削除するなら、remove()
ディレクトリを削除するなら、rmdir()


この投稿にコメントする

削除パスワード

No.4550

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/25 23:14:32)


#include <???>
???の部分は何でしょうか?

remove(ファイル名のフルパス);
でよろしいでしょうか?


この投稿にコメントする

削除パスワード

No.4551

Re:system("cd /S 場所");についてです
投稿者---まきじ(2005/08/25 23:23:35)


仕様ぐらいMSDNなど調べましょう。


この投稿にコメントする

削除パスワード

No.4552

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/25 23:33:34)


ありがとうございます、MSDNしらなかったので(^^;)

場所指定できますか?
Cドライブにある全てのbakファイルを削除する
など
(>_<)


この投稿にコメントする

削除パスワード

No.4554

Re:system("cd /S 場所");についてです
投稿者---まきじ(2005/08/25 23:49:31)


>場所指定できますか?

場所指定?

>Cドライブにある全てのbakファイルを削除する

やってみれば判るのでは?
remove("C:\\*.bak"); とか


この投稿にコメントする

削除パスワード

No.4555

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/26 00:01:12)


やってみました

コンパイルも実行もエラーは無かったです
でも bak ファイルが消えてないです(>_<)

#include <stdio.h>
int main (void)
{
 remove("C:\\*.bak");
 return 0;
}

ソースです(^^;)


この投稿にコメントする

削除パスワード

No.4556

Re:system("cd /S 場所");についてです
投稿者---Blue(2005/08/26 00:02:37)


remove関数って、Win32APIのDeleteFileを呼んでいると思うのですが、
ワイルドカードの指定はできないように思いますが。

他掲示板ですが参考に
■ フォルダ内全てのファイルを削除するには?



この投稿にコメントする

削除パスワード

No.4557

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/26 00:36:37)


難しいです(^^;)
ファイル名での削除なら remove でできるってことですね(^^)
ファイル名を *.bak にしたら bak ファイル全て消える なんて無理ですよね(^^;)


この投稿にコメントする

削除パスワード

No.4558

Re:system("cd /S 場所");についてです
投稿者---Blue(2005/08/26 00:43:25)


io.hの_findfirstと_findnextを使って指定ディレクトリ内の
ファイルを列挙して、removeするとか。
(Win32APIのFindFirstFileとFindNextFileでDeleteFileでも同じ)

使い方は過去ログや検索エンジン使って調べてみてください。
# サブフォルダのファイルも消すとなると一工夫必要ですが。



この投稿にコメントする

削除パスワード

No.4559

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/26 00:46:58)


はい、ありがとうございます(^^)
一応system("del")を使用してプログラムは完成しているのですが・・・「削除したファイル、プロセスが使用中のファイル」を列挙して表示するんです(^^;)
それをどうにか(見やすく)したいと思ってremoveを参考にしてみました(^^;)


この投稿にコメントする

削除パスワード

No.4560

Re:system("cd /S 場所");についてです
投稿者---まきじ(2005/08/26 01:37:17)


>ワイルドカードの指定はできないように思いますが。

私も試してみて、ワイルドカード指定はできない事は確認済みです。
「出来る」か「出来ないか」は試せば判る事なので
試してみて出来ない事が判れば良いと思いました。

remove("C:\\*.bak"); は、ファイル名に".bak"含むファイルを
削除したい時に、最初に思い浮かぶと推測して、提示しました。
(私も、まとめて削除となると、ワイルドカードしか浮かばなかった。)


この投稿にコメントする

削除パスワード

No.4553

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/25 23:48:12)


ゴメンなさい追加です・・・
MSDNを見てもわからないですm(__)m


この投稿にコメントする

削除パスワード

No.4529

Re:system("cd /S 場所");についてです
投稿者---tetrapod(2005/08/23 15:25:39)


誰もツッコまないので...

本質的に system("cd c:\\"); は【まったく無意味】です。
こんなことをしても発行元プロセスのカレントディレクトリは変わりません。
chdir("c:/"); なら大丈夫ですけど。



この投稿にコメントする

削除パスワード

No.4533

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/23 20:03:55)


 >本質的に system("cd c:\\"); は【まったく無意味】です。
 >chdir("c:/"); なら大丈夫ですけど。
 "chdir"があるからsystem("cd")は無意味なんでしょうか??




この投稿にコメントする

削除パスワード

No.4535

Re:system("cd /S 場所");についてです
投稿者---Blue(2005/08/23 20:53:22)


system( "CD 〜" ); ではカレントディレクトリは変更できないということなのでは。

確認プログラム
#include <stdio.h> #include <stdlib.h> #include <direct.h> int main( void ) { char chpath[ _MAX_PATH ]; _getcwd( chpath, sizeof( chpath ) ); printf( "最初のカレントディレクトリ : %s\n", chpath ); system( "CD /D \"C:\\\"" ); _getcwd( chpath, sizeof( chpath ) ); printf( "CDコマンド後のカレントディレクトリ : %s\n", chpath ); chdir( "C:\\" ); _getcwd( chpath, sizeof( chpath ) ); printf( "chdir関数後のカレントディレクトリ : %s\n", chpath ); return EXIT_SUCCESS; }




この投稿にコメントする

削除パスワード

No.4536

Re:system("cd /S 場所");についてです
投稿者---nop(2005/08/23 21:44:56)


>"chdir"があるからsystem("cd")は無意味なんでしょうか??

違います。
system() は、子プロセスを作成し実行を行います。
つまり、system()を呼び出したexeは影響を受けません。
chdir()は、そのexeのカレントディレクトリを変更します。


この投稿にコメントする

削除パスワード

No.4537

Re:system("cd /S 場所");についてです
投稿者---まきじ(2005/08/23 21:51:45)


2000/XP ならタスクマネージャー見ながら
下記のプログラムを実行してみると解ります。

system() を実行された時、cmd.exe が新たに実行される。
PID も違ってます。
#include <stdio.h>
#include <stdlib.h>

int main( void ){
    system("cd .. && pause"); 
    getchar();
    system("dir && pause");
    getchar();
    system("cls  && pause");
    getchar();
    return 0;
}



この投稿にコメントする

削除パスワード

No.4538

Re:system("cd /S 場所");についてです
投稿者---K(2005/08/23 22:18:39)


おぉ〜、皆さんありがとうございます!
いっきに解決しました(^^)


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity