Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удалить из папки подпапки с определенными именами (http://forum.oszone.net/showthread.php?t=279767)

Fresh96 25-03-2014 12:29 2328309

Удалить из папки подпапки с определенными именами
 
Здравствуйте.

В папке 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 2328361

Код:

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

Georgio, не получается то, что нужно. (а точнее говорит, что файл не найден и все тут)

А зачем вот эта строка?
Код:

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

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

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

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

Georgio 25-03-2014 15:38 2328390

Цитата:

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

Видимо.


Цитата:

Цитата Fresh96
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



Время: 08:56.

Время: 08:56.
© OSzone.net 2001-