Windows 7のバッチファイル内のすべてのファイルとサブフォルダーを削除し、最上位フォルダーを保持したいと思います。基本的にフォルダを空にします。そのためのコマンドライン命令は何ですか?
ntvdm
が、64ビットシステムが市場シェアを獲得するにつれて、それはますます無関係になっています。
Windows 7のバッチファイル内のすべてのファイルとサブフォルダーを削除し、最上位フォルダーを保持したいと思います。基本的にフォルダを空にします。そのためのコマンドライン命令は何ですか?
ntvdm
が、64ビットシステムが市場シェアを獲得するにつれて、それはますます無関係になっています。
回答:
これを行うにはdel
、/S
フラグと(すべてのサブディレクトリからすべてのファイルを削除するように指示する)を使用します。
del /S C:\Path\to\directory\*
最良の解決策:たとえば、親ディレクトリのすべてのファイルとサブディレクトリを削除したい場合は、「C:\ Users \ Desktop \ New folder \」と言います。簡単な方法は、以下の3つのコマンドのバッチファイルを作成することです。
cd C:\ Users \ Desktop \ New folder \
del * / S / Q
rmdir / S / Q "C:\ Users \ Desktop \ New folder \"
ここでは、最初にすべてのサブディレクトリ内のすべてのファイルを消去し、次にすべての空のサブディレクトリを消去します。現在の作業ディレクトリは親ディレクトリ、つまり「\ New folder」なので、rmdirコマンドはこのディレクトリ自体を削除できません。
rmdir
、コマンドが削除されますNew folder
親ディレクトリに移動します。
pushd "Parent Directory"
サブフォルダーを削除します。
rd /s /q . 2>nul
pushd
ここにcd
はまだ行っていないことは何も追加しません。
rmdir /s path-to-folder
、すべてのものが入っているフォルダを削除しますが、質問者は作業ディレクトリ内のすべてを削除する方法を知りたがっています。
rmdir "c:\pathofyourdirectory" /q /s
引用符を使用することを忘れないでください。そのため、/q /s
プロンプトなしですべてのリポジトリが削除されます。
次のように、rmdirを使用してファイルとサブフォルダーを削除できます。
rmdir /s/q MyFolderPath
ただし、次のように、rmdirの前にdelを使用するサブフォルダーが構造内に多数ある場合は特に、非常に高速です。
del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
rmdir
コマンドは(両方が同じである)親フォルダを削除します。これは質問に対する答えではありません。なぜ人々は読まないのですか?
すべてのサブフォルダーを含むフォルダー内のすべてのファイルを削除し、いくつかのエラー条件に依存せずにルートフォルダーをそのまま保持する場合(別の回答で見たように)、次のようなバッチファイルを作成できます。
@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つの指示をbatファイルに入れることで、すばやく簡単に実行できます。
mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
フォルダー名にスペースが含まれていると、これがうまく機能しました。
@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (
echo Parameter required.
exit /b 1
) else (
echo ***********************************************************************************
echo *** Deleting all files, including the ones in the subdirs, without confirmation ***
del "%~1\*" /S /Q
echo ***********************************************************************************
REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
if "%%D"=="%~1\." (
echo *** Cleaning out folder: %~1 ***
) else (
echo Removed folder "%%D"
rmdir /S /Q "%%D"
)
)
REM All good.
exit /b 0
)
ファイルを削除するには:
del PATH_TO_FILE
すべてのファイルを含むフォルダーを削除するには:
rmdir /s /q PATH_TO_FOLDER
特定のフォルダーからすべてのファイルを削除する(フォルダー自体を削除しない)のは少し複雑です。del /s *.*
フォルダーを削除することはできませんが、すべてのサブフォルダーからファイルを削除します。したがって、次の2つのコマンドが必要です。
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
次のように、必要なもの(フォルダーまたはファイル)を削除するスクリプトを作成できますmydel.bat
。
@echo off
setlocal enableextensions
if "%~1"=="" (
echo Usage: %0 path
exit /b 1
)
:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%
いくつかの使用例:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder