Войти

Показать полную графическую версию : [решено] Удалить из папки подпапки с определенными именами


Fresh96
25-03-2014, 12:29
Здравствуйте.

В папке Folder1 находятся подпапки с различными именами (в них тоже могут быть подпапки). Нужно удалить все папки с определенными именами. Список имен должен быть в текстовом файле.

Есть похожий код, но он отрабатывает только четко заданное имя папки. Помогите исправить код.
@echo off
setlocal
rem rdir=название_удаляемых_каталогов
set rdir=Архив
rem Раскоментировать чтоб задавать имя удаляемого каталога в строке параметров:
rem set rdir=%1
set fpath=%~dps0
call :func %fpath:~0,-1%
goto end
:func
for /f "delims=" %%i in ('dir %1 /a:d /b') do IF /I %%i==%rdir% ( rmdir /s /q %1\%%i && echo deleted %1\%%i ) ELSE ( call :func %1\%%i )
exit /b
:end

Заранее благодарю.

Georgio
25-03-2014, 14:35
@echo off
chcp 1251>nul
for /f "usebackq delims=" %%i in ("folder_names.txt") do (
for /f "delims=" %%j in ('dir "Folder1" /ad /b /s') do (
if /i "%%~i"=="%%~nxj" (
if exist "%%j\" (
rmdir /s /q "%%j"&& echo deleted %%j
)
)
)
)
pause>nul
exit /b

Fresh96
25-03-2014, 15:24
Georgio, не получается то, что нужно. (а точнее говорит, что файл не найден и все тут)

А зачем вот эта строка?
'dir "Folder1" /ad /b /s'

Видимо, я не очень хорошо объяснил, что хочу, но привязываться к папке с именем Folder1 не нужно.

Folder1New - корневая папка
В ней находятся другие папки, например П1, П3, У2, Z87, а также
исполняемый батник и текстовый файл со списком имен папок на удаление.

В некоторых папках (например П1, У2) - есть еще подпапки, которые нужно удалять.

Меня устраивает bat из первого поста, но к нему хотелось бы прикрутить задание имён папок на удаление из текстового файла (несколько имен в списке).

Georgio
25-03-2014, 15:38
Видимо, я не очень хорошо объяснил, что хочу, но привязываться к папке с именем Folder1 не нужно. »

Видимо.


Folder1New - корневая папка
В ней находятся другие папки, например П1, П3, У2, Z87, а также
исполняемый батник и текстовый файл со списком имен папок на удаление.
В некоторых папках (например П1, У2) - есть еще подпапки, которые нужно удалять. »

Так в чём же проблема? "folder_names.txt" -- это Ваш "текстовый файл со списком имен папок на удаление".

@echo off
chcp 1251>nul
for /f "usebackq delims=" %%i in ("folder_names.txt") do (
for /f "delims=" %%j in ('dir /ad /b /s') do (
if /i "%%~i"=="%%~nxj" (
if exist "%%j\" (
rmdir /s /q "%%j"&& echo deleted %%j
)
)
)
)
pause>nul
exit /b




© OSzone.net 2001-2012