- PR -

C#コーディングで dosコマンドを使ってファイルやフォルダの削除・コピーをしたいのですが・・・

投稿者投稿内容
胴狸
会議室デビュー日: 2006/01/20
投稿数: 8
投稿日時: 2006-05-17 03:37
初心者です。
Cのシステム関数のように、C#コーディングで dosコマンドを使ってファイルやフォルダの削除・コピーをしたいのですがうまくできません。

下の@Aの二通り試しましたがどちらもエラーとなります。
('System.ComponentModel.Win32Exception' のハンドルされていない例外が system.dll で発生しました。
 追加情報 : 指定されたファイルが見つかりません。)
解決方法ご教示よろしくお願いいたします。

@
Process p = Process.Start( "del ",@"C:\\test\\*.csv");
p.WaitForExit();

A
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.CreateNoWindow = true; //ウィンドウを表示しない
psi.Arguments = @"del C:\\test\\*.csv";
Process p = Process.Start(psi);
p.WaitForExit();
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-17 04:40
引用:

胴狸さんの書き込み (2006-05-17 03:37) より:

@
Process p = Process.Start( "del ",@"C:\test\*.csv");
p.WaitForExit();

A
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.CreateNoWindow = true; //ウィンドウを表示しない
psi.Arguments = @"del C:\test\*.csv";
Process p = Process.Start(psi);
p.WaitForExit();



普通は System.IO.File.Delete メソッドを使うんですが
あえて del でファイルを削除するなら

"del.exe" なんてものは無いので
コマンドプロンプトの引数に渡します。
コード:
        System.Diagnostics.Process p = new System.Diagnostics.Process();
        try {
            p.StartInfo.FileName = "cmd";
            p.StartInfo.Arguments = @"/c del /q C:\TEMP\a\*";
            p.Start();
            p.WaitForExit();
        } finally {
            p.Dispose();
        }


胴狸
会議室デビュー日: 2006/01/20
投稿数: 8
投稿日時: 2006-05-17 06:15
かるあ様

 うまくできました。
 これからDOSコマンドを使う場面がでてくるのでとても助かりました。
 ありがとうございました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-17 06:55
引用:

胴狸さんの書き込み (2006-05-17 06:15) より:

 これからDOSコマンドを使う場面がでてくるのでとても助かりました。


えっ・・・そんなに頻繁につかうんですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-17 07:45
引用:

かるあさんの書き込み (2006-05-17 04:40) より:

p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = @"/c del /q C:TEMPa*";


"cmd" ではなく "%COMSPEC%" を使った方が良いと思います。

引用:

かるあさんの書き込み (2006-05-17 06:55) より:

引用:

胴狸さんの書き込み (2006-05-17 06:15) より:

これからDOSコマンドを使う場面がでてくるのでとても助かりました。


えっ・・・そんなに頻繁につかうんですか?


悲しき事情があるのかもしれません。コマンド プロンプトなんてなるべく使わないに限りますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-17 08:08
引用:

じゃんぬねっとさんの書き込み (2006-05-17 07:45) より:

"cmd" ではなく "%COMSPEC%" を使った方が良いと思います。


フォローありがとうございます。
環境変数使えたんですね。そこまで頭が回りませんでした(汗

コード:
String cmdPath = System.Environment.GetEnvironmentVariable("COMSPEC");
p.StartInfo.FileName = cmdPath;

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-05-17 11:14
C# で生活するなら、PowerShell あたりで、やったほうが良いでしょう。
DOSコマンドの 捻じ曲がってしまった 味わいを 体験しなくて済みます。
(不屈の闘志を養成はできますが、
現代的プログラム言語から離れたくないなら)
------ 21世紀に 昭和の 言語に会った感じ
-- 私のソースは ダビンチ・コード。 謎に迫ると、・・・

[ メッセージ編集済み 編集者: MMX 編集日時 2006-05-20 18:20 ]
胴狸
会議室デビュー日: 2006/01/20
投稿数: 8
投稿日時: 2006-05-18 20:50
みなさま、ありがとうございます。

>悲しき事情・・・
 そうなんです(ただし自分に起因する。。。泣)
 動かせる状態にしてから整えたいというのが正直なところです。
 腕力がないので、使いうる手段でまず、です。
 「考えない愚かな開発者に理解を求めるには?」 の事例にあるようなこわいことは避けます。

>PowerShell
 やってみます!

スキルアップ/キャリアアップ(JOB@IT)