質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

4回答

2786閲覧

特定フォルダ内のファイルとフォルダを削除する方法について

yamato_0410

総合スコア36

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/04/23 05:15

編集2020/04/23 14:33

とある特定フォルダ配下のフォルダ内の
ファイル、フォルダをすべて削除するような以下内容のBATファイルを作成しました。

特定の条件下ではこちらの想定通りに動いてくれますが、
フォルダ名に() ← 半角カッコ
等があったりするとそのフォルダだけ残ってしまいます。

@echo off dir /b /ad D:\WORK\ > "D:\111\dir.txt" for /f "tokens=1,2,3" %%a in (D:\111\dir.txt) do ( pushd D:\WORK\%%a %%b %%c del /s /q *.* dir /b /s /ad D:\WORK\%%a %%b %%c >> "D:\111\dir_2.txt" ) for /f "delims=" %%d in (D:\111\dir_2.txt) do ( rmdir /s /q %%d )

どの用に修正すればカッコ等が付いたフォルダも削除できるようになるか
ご教授ください。

****実装したい内容
・前提
D:\WROK配下にはTESTフォルダしかない。

D:\WORK\TEST配下に
①:1フォルダ
②:2 フォルダ
③:3.txt
④:4.zip
⑤:5(6)フォルダ

・実装内容
TESTフォルダを削除することなく上記の①~⑤を削除したい。
・問題点
上述したコマンドをBAT化し実行すると①~④は削除されるが⑤のみ残ってしまう。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

これで行けると思います。

bat

1cd d:\wrok 2del /q test 3md test

1.testごと削除
2.testを作成

投稿2020/08/05 01:30

natadekoko

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PowerShell を使えば配下にファイルが入っているディレクトリを簡単に削除できます。

PowerShell.exe -ExecutionPolicy RemoteSigned -c "Remove-Item D:\WORK\TEST* -Recurse -Force"

これを実行する前に、実行すると何が削除されるのかを次のコマンドであらかじめ確かめることができます。

PowerShell.exe -ExecutionPolicy RemoteSigned -c "Remove-Item D:\WORK\TEST* -Recurse -Force -Whatif"

投稿2020/05/19 13:20

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

VBScriptと言うタグがありましたので、そっち方面で回答させて頂きます。
このような形にして頂ければ、削除出来たハズです。

BAT

1cd %~dp0% 2cscript ファイル名.vbs

VBS

1Function delete_directory(ByVal directoryName) 2 Dim objFso: Set objFso = CreateObject("Scripting.FileSystemObject") 3 On Error Resume Next 4 5 If objFso.FolderExists(directoryName) = True Then 6 'Delete directory(including read-only and subdirectory) 7 call objFso.DeleteFolder(directoryName, True) 8 Else 9 WScript.Echo "Not exist, " + directoryName 10 End If 11 12 Set objFso = Nothing 13End Function

投稿2020/04/27 01:36

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamato_0410

2020/04/28 08:20

ご回答ありがとうございます。 VBScriptについて無知なのですが、 D:\WROK配下のフォルダをコマンドプロンプトでdirした結果のようなことはできるのでしょうか? できるのであればそれを入れ込んで実装したいのですが可能でしょうか?
stdio

2020/08/05 03:46

まだ、質問がクローズされていなかったので、追加の質問に対して回答させて頂きます。 同じScripting.FileSystemObjectで可能です。 ただ、関数で一つ呼ぶだけで出来る訳ではないので、その辺はきちんと仕様を把握しながら行って下さい。 こちらなどが参考になると思います。 https://qiita.com/asterisk9101/items/a7310c0e4ec33352835f かなり廃れた技術ですが、拡張性の面から言うとこっちの方が何かと便利です。
guest

0

実行前はどんなディレクトリ構成で、実行後にそれがどうなって欲しいのでしょうか?

とある特定フォルダ配下のフォルダ内のファイル、フォルダをすべて削除する

に文字通り答えると、

CMD

1rd /s /q "フォルダ名"

と1コマンドですが。
#追記

D:\WROK配下にはTESTフォルダしかない。
TESTフォルダを削除することなく上記の①~⑤を削除したい。

であれば、

CMD

1rd /s /q D:\WORK\TEST 2md D:\WORK\TEST

ですね。

#追記2

TESTフォルダには共有設定がしてあるので削除&再作成は面倒

CMD

1pushd D:\WORK\TEST 2if errorlevel 1 exit /b 3del *? 4for /d %%A in (*) do rd /s /q "%%A" 5popd

pushd が失敗したのにファイル削除すると予想外の物が消えて大変なので、念のためにそのチェックを入れてます。
ファイル削除でdel *でなくdel *?としているのは確認メッセージを出さないようにするため。

#追記3
カレントディレクトリをそこにしておけば、消えないのを利用すれば、

CMD

1pushd D:\WORK\TEST 2if errorlevel 1 exit /b 3rd /s /q . 2>NUL 4popd

でいいか。これでTESTは削除されません。

投稿2020/04/23 08:41

編集2020/04/27 05:20
otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamato_0410

2020/04/23 10:06

言葉足らずで申し訳ございません。 そもそも、特定のフォルダ配下を1度dirした結果をテキストに出力のうえfor文を使用しその配下のフォルダ・ファイルすべてを削除することを実装したいです。 質問に記載したコマンドである程度実装できているのですが、フォルダ名にカッコが入っていたりするとそのフォルダだけ残ってしまうため、ご質問させて頂いた次第になります。
otn

2020/04/23 10:32

一体どういう構成で、どういう結果になるのか、さっぱりです。 \WORK\test\%%a %%b %%c が意味不明だし、ディレクトリを削除する処理が無いし。
yamato_0410

2020/04/23 14:34

申し訳ございません。質問内容を更新しました。 お手数ですが、ご確認頂ければと思います。
yamato_0410

2020/04/27 00:29

ご回答ありがとうございます。 度々の補足で申し訳ないのですが、こちらのフォルダはファイルサーバのフォルダに対して実施するコマンドを想定していましたので元あるフォルダを削除することができないです。 フォルダを削除することなく実装することは可能でしょうか?
otn

2020/04/27 00:54

ああ、共有設定が絡むと言うことですね。
yamato_0410

2020/04/28 08:21

ご回答ありがとうございます。 pushdの所はテキスト(dirした結果)から代入することはできるのでしょうか?
otn

2020/04/28 12:33

どういうことでしょうか? 何をしたいのでしょうか?
yamato_0410

2020/05/19 09:37

ご連絡が遅くなり申し訳ありません。 質問にも記載しました通り、dirした結果を順にフォルダの中身を消していくようなものを作成したいと思っております。
otn

2020/05/19 09:59

手段を聞いているのじゃなくて、目的を聞いています。 どういう結果を得たいのかと言う事なのですが。
yamato_0410

2020/05/19 10:20

目的は不要なファイル・フォルダを削除したいのですが、 とあるフォルダ配下のファイル・フォルダを削除する際に自動でやる(ファイルサーバなので手動で全選択し削除すると相当な時間がかかることが想定される)ことを目的にしています。 回答になっていますでしょうか?
otn

2020/05/19 11:03

> 不要なファイル・フォルダ これを客観的・具体的に。
yamato_0410

2020/05/19 12:49

使用しなくなった方のフォルダ配下のものすべて という記述でしょうか。
otn

2020/05/19 12:56

追記3で何がまずいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問