del,rmdirなどのコマンドの操作について-2

解決


MS-DOS  2010-02-24 16:32:21  No: 37753  IP: 192.*.*.*

先ほど教えて頂いた延長線上の事で Delphiと言うよりもOSコマンドなんですが、
https://www.petitmonte.com/bbs/answers?question_id=6856

testと言うフォルダーを消したいのですが
  cmd := 'command.com /c rmdir /s /q D:\test\';
  cmd := 'command.com /c rmdir D:\test\ /s /q';

コマンドとオプションの並びが通常のコマンドプロンプトと違うためか
消されません。(一応並びも幾通りか試しました)

お手数ですが、よろしくお願いします。

編集 削除
tor  2010-02-24 17:40:59  No: 37754  IP: 192.*.*.*

delやrmdir相当のことをやりたいだけなら、わざわざcommandを呼ばなくても
Delphiのファイル操作機能やSHFileOperationでできると思うけど…

そのコマンドをDOSプロンプトから実行したらちゃんと動くんですか?
また、D:\test というのは実際のディレクトリ名でしょうか、それともただの例?
もし空白を含むパスだったら、"" で囲まないと正しく解釈されませんよ。

編集 削除
MS-DOS  2010-02-24 18:04:56  No: 37755  IP: 192.*.*.*

torさん、ありがとうございます。

実はバッチファイルみたいなリストを処理させようとしています。

これは、バッチファイル上では動いています。(rmdir)
rmdir /s /q D:\test\

Delphiでも、フォルダーの下にサブフォルダーが無ければ以下で消せます。
cmd := 'command.com /c rmdir D:\test\';

しかし、フォルダーの下にサブフォルダーがありますと以下でも消せません。
cmd := 'command.com /c rmdir /s /q D:\test\';

何か微妙な動きなんです。

無理なようであれば..という事で「SHFileOperation」を使って
削除させようかとも思っていますが、削除の時確認ダイアログが出るので
これも今いち採用に迷っています。

> また、D:\test というのは実際のディレクトリ名でしょうか、それともただの例?
> もし空白を含むパスだったら、"" で囲まないと正しく解釈されませんよ。
..空白は入ってないです。

何かいい打開策が無いかと調査中です。
いい方法があれば、教えて下さい。
よろしくお願いします。

編集 削除
MS-DOS  2010-02-24 18:13:42  No: 37756  IP: 192.*.*.*

すみません、補足です。

SHFileOperationで、FOF_NOCONFIRMATION を指定するとダイアログが出ないですね。
  fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;

最悪これでいけそうです。
もう少し確認してみます。

編集 削除
MS-DOS  2010-02-24 23:24:36  No: 37757  IP: 192.*.*.*

以下のようにすればゴミ箱にも入らないですね。
  fFlags := FOF_NOCONFIRMATION;

何とか「SHFileOperation」を使ってしのぐ事になりました。
これで解決とさせて頂きます。

編集 削除