フォルダ削除
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
Re: ワイルドカード
> ありがとうございました。
>
> RemoveDirectory関数で理想通りです。
> しかし、複数の空フォルダが有る場合に、
>
> RemoveDirectory(”C:\test\*.txt")
>
> こんな感じで実行しましたが、削除されません。
> ABでのワイルドカード”*”の使い方が悪いのでしょうか。
RemoveDirectory のパス指定のところに、
テキスト ファイルのパスが入力されているのが原因です。
RemoveDirectory のパス指定には、
ディレクトリのフルパスを入力してください。
>
> RemoveDirectory関数で理想通りです。
> しかし、複数の空フォルダが有る場合に、
>
> RemoveDirectory(”C:\test\*.txt")
>
> こんな感じで実行しましたが、削除されません。
> ABでのワイルドカード”*”の使い方が悪いのでしょうか。
RemoveDirectory のパス指定のところに、
テキスト ファイルのパスが入力されているのが原因です。
RemoveDirectory のパス指定には、
ディレクトリのフルパスを入力してください。
ちなみに、ファイルの削除にはKill命令語を使います。
コード: 全て選択
Kill "C:\test\*.txt"
”*.txt”はフォルダです。
ご回答ありがとうございます。
実は”*.txt”はフォルダのことです。
単数のフォルダは削除できますが、
複数のフォルダの削除ができません。
そこで考えたのが、昔コマンドでよく使った”*”を
活かして、空のフォルダすべてを削除できればと思い
ご意見頂ければ、という事です。
実は”*.txt”はフォルダのことです。
単数のフォルダは削除できますが、
複数のフォルダの削除ができません。
そこで考えたのが、昔コマンドでよく使った”*”を
活かして、空のフォルダすべてを削除できればと思い
ご意見頂ければ、という事です。
Re: ”*.txt”はフォルダです。
> 実は”*.txt”はフォルダのことです。
???
> 単数のフォルダは削除できますが、
> 複数のフォルダの削除ができません。
複数のフォルダを削除したい場合、自分の考えですが、FindFirstFile()からFindNextFile()関数へ続き、グルグル回してフォルダを特定、特定する度に何らかの条件に当てはまるフォルダを削除、という形で行おうと思います。
よく覚えていないのですけど、中身のあるフォルダの削除は、RemoveDirectory()関数が失敗した場合に削除しようとしたフォルダの中身をFindFirstFile()からFindNextFile()関数へと続けてグルグル、ファイルを発見する度に削除、フォルダの中身が無くなった所で、再度フォルダを削除する、といったようにしていたような...。
ちなみに、フォルダの中にはフォルダがある場合も勿論あるので再起処理してたと思います。
???
> 単数のフォルダは削除できますが、
> 複数のフォルダの削除ができません。
複数のフォルダを削除したい場合、自分の考えですが、FindFirstFile()からFindNextFile()関数へ続き、グルグル回してフォルダを特定、特定する度に何らかの条件に当てはまるフォルダを削除、という形で行おうと思います。
よく覚えていないのですけど、中身のあるフォルダの削除は、RemoveDirectory()関数が失敗した場合に削除しようとしたフォルダの中身をFindFirstFile()からFindNextFile()関数へと続けてグルグル、ファイルを発見する度に削除、フォルダの中身が無くなった所で、再度フォルダを削除する、といったようにしていたような...。
ちなみに、フォルダの中にはフォルダがある場合も勿論あるので再起処理してたと思います。
Re: ”*.txt”はフォルダです。
エクスプローラからなら、中身のあるフォルダが削除できますよね。
これを利用すると、シェルの機能で中身のあるフォルダを一発で削除できてしまったりします。
コードの切れ端かどこかに以前書いた覚えがあるのですが、なくなっているのでもう一度方法を紹介しておきます。
これを利用すると、シェルの機能で中身のあるフォルダを一発で削除できてしまったりします。
コードの切れ端かどこかに以前書いた覚えがあるのですが、なくなっているのでもう一度方法を紹介しておきます。
コード: 全て選択
Function RemoveDirectory2(PathName As String) As Long
Dim udtFileOperation As SHFILEOPSTRUCT
Dim PathName2 As *Byte
If (GetFileAttributes(PathName) And FILE_ATTRIBUTE_DIRECTORY)=0 Then
RemoveDirectory2=-1
Exit Function
End If
PathName2=calloc(Len(PathName)+2)
lstrcpy(PathName2,PathName)
With udtFileOperation
.hWnd=0
.wFunc=FO_DELETE
.pFrom=PathName2
.pTo=NULL
'[Shift]を押しながらのとき完全削除
.fFlags=FOF_NOCONFIRMATION
RemoveDirectory2=SHFileOperation(udtFileOperation)
End With
free(PathName2)
End Function
'フォルダ C:\test を削除する(中身にファイルやフォルダがあってもOK)
RemoveDirectory2("C:\test")
[hira]
http://hira.hopto.org/
http://hira.hopto.org/
すみません。
ShellExecute (NULL,NULL,"DelTree","/Y C:\Windows\デスクトップ\Kiete",NULL,SW_HIDE)
に関してなのですが、*を使え簡単で良いと思ったものの
DelTreeもフルパスが好ましいという以外に問題があるようです。
上記を実行した後にCtrl+Alt+Deleteキーを押して見ると
Winoldap
が実行する毎に増えている様なのですが何なのでしょうか?
これを回避する方法はないものかと思ったもののイグトランス (egtra)さんの
書き込みを読むと今後使えそうに無いのでまぁいいかな。
試してみたらWindows 95でもRD [ドライブ:]パスがあるんですね。
ShellExecute (NULL,NULL,"DelTree","/Y C:\Windows\デスクトップ\Kiete",NULL,SW_HIDE)
に関してなのですが、*を使え簡単で良いと思ったものの
DelTreeもフルパスが好ましいという以外に問題があるようです。
上記を実行した後にCtrl+Alt+Deleteキーを押して見ると
Winoldap
が実行する毎に増えている様なのですが何なのでしょうか?
これを回避する方法はないものかと思ったもののイグトランス (egtra)さんの
書き込みを読むと今後使えそうに無いのでまぁいいかな。
試してみたらWindows 95でもRD [ドライブ:]パスがあるんですね。