2010-08-09 16:42:36 +0000 2010-08-09 16:42:36 +0000
43
43
Advertisement

コマンドプロンプトから指定したフォルダ内の全てのファイル/サブフォルダを削除する方法を教えてください

Advertisement

Windows7のバッチファイル内の全てのファイル/サブフォルダを削除して、一番上のフォルダを残しておきたいのですが、どのようにすればいいでしょうか?基本的にはフォルダを空にします。そのためのコマンドライン命令を教えてください。

Advertisement
Advertisement

回答 (11)

54
54
54
2010-08-09 16:46:23 +0000

これは del/S フラグ (すべてのサブディレクトリからすべてのファイルを削除するように指示する) を使って行うことができます:

del /S C:\Path\to\directory\*
23
23
23
2013-10-05 04:44:01 +0000

解決策:例えば、親ディレクトリの「C:Us\Desktop」のファイルとサブディレクトリを削除したい。簡単な方法は、以下の3つのコマンドでバッチファイルを作成することだ。

cd C:Illustratorの「C:Illustrator」フォルダを削除する

del * /S /Q

rmdir /S /Q “C:Illustrator」フォルダを削除する

ここでは、まず、全てのファイルを削除して、次に、空のフォルダを削除する。現在の作業ディレクトリは、親ディレクトリである”\New folder “なので、このディレクトリを削除することはできません。

9
Advertisement
9
9
2014-07-03 12:38:29 +0000
Advertisement

親ディレクトリに移動する:

pushd "Parent Directory"

サブフォルダを削除する:

rd /s /q . 2>nul
6
6
6
2015-04-27 07:21:36 +0000

このように、ファイルとサブフォルダを削除するために rmdir を使用することができます:

rmdir /s/q MyFolderPath

しかし、それはかなり高速です、特にあなたの構造の中で多くのサブフォルダを持っている場合は、このように rmdir の前に del を使用するには、次のように:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
5
Advertisement
5
5
2013-07-31 18:23:00 +0000
Advertisement
rmdir "c:\pathofyourdirectory" /q /s

引用符を使うのを忘れずに、/q /sの場合は、プロンプトなしですべてのリポジトリを削除します。

3
3
3
2014-02-05 16:39:49 +0000

すべてのサブフォルダを含むフォルダ内のすべてのファイルを削除し、ルートフォルダをそのまま維持するためにいくつかのエラー条件に依存しないようにしたい場合(別の回答で見たように)、次のようなバッチファイルを持つことができます:

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

そして、あなたは単にそれを呼び出すことができます:

empty_my_folder.bat "C:\whatever\is\my folder"
3
Advertisement
3
3
2017-02-02 19:20:53 +0000
Advertisement

以下の3つの指示をバットファイルに入れることで、素早く簡単に行うことができます:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
1
1
1
2016-11-10 17:16:53 +0000

ファイルを削除するには:

del PATH_TO_FILE

すべてのファイルを含むフォルダを削除するには:

rmdir /s /q PATH_TO_FOLDER

特定のフォルダからすべてのファイルを削除するには(フォルダ自体を削除するのではなく)少し複雑です。そのため、

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

の2つのコマンドが必要になります。 このようなスクリプトを作成することで、任意のフォルダやファイルを削除することができます。

1
Advertisement
1
1
2014-02-13 18:06:34 +0000
Advertisement

これは、フォルダ名にスペースがある場合にうまく機能しました。

0
0
0
2020-02-17 22:41:30 +0000

user340956 はこの解決策にかなり近づいていたのですが、 近いとは何を言うか知っていますよね…

明確にしておくと、rd /s /q c:\foobar はターゲットディレクトリの内容に加えて、 ターゲットディレクトリを削除しますが、常にディレクトリ自体を削除したいわけではなく、 ディレクトリの内容を削除して、ディレクトリだけにしておきたい場合もあります。しかし、Micrsoft は、その無限の「知恵」の中で、このコマンドを削除して Windows に移植しませんでした。

サードパーティのツールに頼らなくても動作する解決策があります。実際の実行ファイルを書くのではなく、コマンドラインスクリプトで可能な限りシンプルで効率的です。環境変数を設定せず、ループも使用しません。また、可能な限り安全であり、可能な限りエラーチェックを可能な限り行っています。

deltree (子供用には dt.bat; 私は年寄りなので dt.cmd を使います):

:: dt is a Windows-compatible version of the deltree command
:: Posted to SuperUser by Synetech: https://superuser.com/a/1526232/3279

@echo off
goto start

:start
    if ["%~1"]==[""] goto usage
    pushd "%~1" 2>nul
    if /i not ["%cd%"]==["%~1"] goto wrongdir
    rd /s /q "%~1" 2>nul
    popd
goto :eof

:usage
    echo Delete all of the contents of a directory
    echo.
    echo ^> %0 DIR
    echo.
    echo %0 is a substitute for deltree, it recursively deletes the contents
    echo (files and folders) of a directory, but not the directory itself
    echo.
    echo DIR is the directory whose contents are to be deleted
goto :eof

:wrongdir
    echo Could not change to the target directory. Invalid directory? Access denied?
goto :eof

以下のように動作します。2. カレントディレクトリを保存してからターゲットディレクトリに切り替え、エラーはすべて .bat にリダイレクトすることで、よりクリーンなコマンドライン環境を実現します (そしてログもクリーンになります)。002 3. カレントディレクトリがターゲットディレクトリと同じかどうかをチェックして、そうでない場合はエラーメッセージを表示して終了します。これにより、pushd コマンドが失敗した場合に、誤って前のディレクトリの内容を削除してしまうことを防ぐことができます (例。 - このチェックは大文字小文字を区別しないので、Windows 上では usually 安全ですが、Windows 上であっても、*nix システムで使用されているような大文字小文字を区別するファイルシステムには適用されません。短いファイル名ではないファイル名を使わなければならないのは少し不便ですが、特に SFN は完全に信頼できるものではないし、常に予測可能なものではないので (完全に無効化されている可能性もあります)、後悔するよりは安全な方が良いでしょう。これに関するいくつかの注意点: - ターゲットディレクトリはカレントディレクトリなので、システムはファイルハンドルをオープンにしているので、実際に削除することはできません。 - ターゲットディレクトリの内容が削除されるまでは削除しようとしないので、(開いているファイルハンドルを持つもの以外は)空になるはずです。 5.最後に、nul を使って以前のカレントディレクトリに戻り、スクリプトを終了します。

0
0
0
2018-05-07 18:43:18 +0000

これは私のために働いたものです。ファイルを削除したいフォルダの中に移動します。タイプ: del * 3. はいのための Y。完了

Advertisement

関連する質問

3
19
10
28
3
Advertisement
Advertisement