6

同じ名前のサブフォルダーからファイルを削除する必要があります。私のファイルパスは次のようなものです。

d:\test\test1\archive\*.txt
d:\test\try\archive\*.txt
d:\test\model\archive\*.txt

delバッチスクリプトでコマンドを使用して削除しようとしました。しかし、フォルダー「 test 」には100を超えるフォルダーがあります。delそのため、すべてのパスに使用するのは非常に困難です。

「アーカイブ」フォルダーの親フォルダー名を除いて、すべてのパスですべて同じままです。そのため、バッチ スクリプトを使用してファイルを簡単に削除する方法があると思います。

バッチ スクリプトを使用してファイルを削除する簡単な方法があるかどうか、誰でも教えてもらえますか? delまたは、100 個のフォルダーすべてに対して繰り返す必要がありますか?

4

5 に答える 5

29

/sのスイッチを使用してdel、サブフォルダーも削除できます。

del D:\test\*.* /s

すべてのサブフォルダー内のすべてのファイルを含む、テスト中のすべてのファイルを削除します。

フォルダーを削除するにはrd、同じスイッチが適用されます。

rd D:\test\folder /s /q

rdただし、ワイルドカードはサポートされていないため、ディレクトリ*の下のすべてのサブフォルダーを再帰的に削除する場合は、ループを使用できます。testfor

for /r /d D:\test %a in (*) do rd %a /s /q

forバッチ ファイルでオプションを使用している場合は%、1 ではなく 2 を使用することを忘れないでください。

于 2012-12-10T12:11:16.007 に答える
5

バットファイル内でpowershellを使用する

PowerShell Remove-Item c:\scripts\* -include *.txt -exclude *test* -force -recurse

特定のフォルダーまたはファイルの削除から除外することもできます。

PowerShell Remove-Item C:/*  -Exclude WINDOWS,autoexec.bat -force -recurse
于 2014-02-21T20:44:01.027 に答える
2

クローズドトピックから移動しました

del /s d:\test\archive*.txt

これにより、すべてのテキストファイルが取得されます

あるいは、

特定のファイルを検索して移動するように、既に作成したスクリプトを変更しました。これは、ファイルを見つけて削除する必要があります。選択画面でどのフォルダに移動するかを選択するだけです。

ただし、使用する前にシステムでこれをテストしてください。

@echo off
Title DeleteFilesInSubfolderList
color 0A
SETLOCAL ENABLEDELAYEDEXPANSION

REM ---------------------------
REM   *** EDIT VARIABLES BELOW ***
REM ---------------------------

set targetFolder=
REM targetFolder is the location you want to delete from    
REM ---------------------------
REM  *** DO NOT EDIT BELOW ***
REM ---------------------------

IF NOT DEFINED targetFolder echo.Please type in the full BASE Symform Offline Folder (I.E. U:\targetFolder)
IF NOT DEFINED targetFolder set /p targetFolder=:
cls
echo.Listing folders for: %targetFolder%\^*
echo.-------------------------------
set Index=1
for /d %%D in (%targetFolder%\*) do (
  set "Subfolders[!Index!]=%%D"
  set /a Index+=1
)
set /a UBound=Index-1
for /l %%i in (1,1,%UBound%) do echo. %%i. !Subfolders[%%i]!

:choiceloop
echo.-------------------------------
set /p Choice=Search for ERRORS in: 
if "%Choice%"=="" goto chioceloop
if %Choice% LSS 1 goto choiceloop
if %Choice% GTR %UBound% goto choiceloop
set Subfolder=!Subfolders[%Choice%]!
goto start

:start
TITLE Delete Text Files - %Subfolder%
IF NOT EXIST %ERRPATH% goto notExist
IF EXIST %ERRPATH% echo.%ERRPATH% Exists - Beginning to test-delete files...
echo.Searching for .txt files...
pushd %ERRPATH%
for /r %%a in (*.txt) do (
echo "%%a" "%Subfolder%\%%~nxa"
)
popd
echo.
echo.
verIFy >nul
echo.Execute^?
choice /C:YNX /N /M "(Y)Yes or (N)No:"
IF '%ERRORLEVEL%'=='1' set question1=Y
IF '%ERRORLEVEL%'=='2' set question1=N
IF /I '%question1%'=='Y' goto execute
IF /I '%question1%'=='N' goto end

:execute
echo.%ERRPATH% Exists - Beginning to delete files...
echo.Searching for .txt files...
pushd %ERRPATH%
for /r %%a in (*.txt) do (
del "%%a" "%Subfolder%\%%~nxa"
)
popd
goto end

:end
echo.
echo.
echo.Finished deleting files from %subfolder%
pause
goto choiceloop
ENDLOCAL
exit


REM Created by Trevor Giannetti
REM An unpublished work
REM (October 2012)

を変更すると

set targetFolder= 

必要なフォルダーに移動すると、フォルダーの入力を求めるプロンプトは表示されません。*ベース パスを入力するときは、フォーマットの末尾に「\」が含まれていないことに注意してください。例 d:\test c:\temp

お役に立てれば

于 2012-12-10T15:27:21.283 に答える
-1

del parentpath(または、親フォルダー内に .bat ファイルを配置するだけです) *.txt /s

これにより、親フォルダーとすべてのサブフォルダー内のすべての .txt ファイルが削除されます。複数のファイル拡張子を削除する場合は、スペースを追加して同じことを行います。元。*.txt *.dll *.xml

于 2015-07-07T19:41:20.203 に答える