Excluir arquivos na subpasta usando o script em lote

Eu tenho que excluir arquivos de uma subpasta com o mesmo nome. Meu caminho de arquivo é como segue.

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

Eu tentei excluir usandodel comando no script em lote. Mas existem mais de 100 pastas na pasta "teste". Então, é muito difícil de usardel para cada caminho.

Exceto pelo nome da pasta pai da pasta "archive", tudo permanece o mesmo para todos os caminhos. Então eu acho que pode haver alguma maneira fácil de excluir os arquivos usando o script em lote.

Alguém pode me orientar se existe alguma maneira fácil de excluir os arquivos usando o script em lote? Ou eu tenho que repetirdel para todas as 100 pastas?

questionAnswers(4)

Use o powershell dentro do seu arquivo bat

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

Você também pode excluir da remoção de alguma pasta ou arquivo específico:

PowerShell Remove-Item C:/*  -Exclude WINDOWS,autoexec.bat -force -recurse

/s mudar paradel para excluir em subpastas também.

Exemplo

del D:\test\*.* /s

Excluir todos os arquivos em teste, incluindo todos os arquivos em todas as subpastas.

Para remover pastas, userd, o mesmo interruptor se aplica.

rd D:\test\folder /s /q

rd não suporta curingas* embora então se você quiser recursivamente excluir todas as subpastas sob otest diretório você pode usar umfor loop.

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

Se você estiver usando ofor opção em um arquivo de lote lembre-se de usar 2%em vez de 1.

Movido do tópico fechado

Isso deve te dar todos os seus arquivos de texto

Alternativamente,

Eu modifiquei um script que eu já escrevi para procurar certos arquivos para movê-los, este deve ir e encontrar arquivos e excluí-los. Ele permite que você escolha apenas para qual pasta por uma tela de seleção.

Por favor, teste isso no seu sistema antes de usá-lo embora.

@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)

Se você mudar o

set targetFolder= 

para a pasta que você deseja, você não será solicitado para a pasta. * Lembre-se de quando colocar o caminho base, o formato não inclui um '\' no final. por exemplo. d: \ test c: \ temp

Espero que isto ajude

del parentpath (ou apenas coloque o arquivo .bat dentro da pasta pai) * .txt / s

Isso excluirá todos os arquivos .txt no pai e em todas as subpastas. Se você deseja excluir várias extensões de arquivo, basta adicionar um espaço e fazer a mesma coisa. Ex. * .txt * .dll * .xml

yourAnswerToTheQuestion