Показать полную графическую версию : [решено] Найти и удалить папку.
luda-chel
17-08-2014, 14:37
Здравствуйте ВСЕМ!
Подскажите как создать bat файл на тему:
Есть на диске папка C:\User - в ней много всего(папок, файлов). Нужно среди этого всего найти папки VB_1, VB_2, VB_INF и т.д. и удалить их вместе с содержимым.
пробовала так, но какая то ерунда выходит:
Echo off
FOR /D %%i IN ("C:\User\VB_*" ) DO RD "%%i" /S /Q
FOR /F "usebackq delims=" %%j IN ('Dir "C:\User\" /S /B /A:D') DO FOR /D %%i IN ("%%j\VB_*" ) DO RD "%%i" /S /Q
luda-chel
17-08-2014, 15:48
Что то не получается. Пишет что системе не удается найти путь. Системе не удается найти указанный файл.
@echo off
cd /d "C:\User"
for /f "delims=" %%i in ('
"dir /ad/b/s "VB_*" 2>nul"
') do (
rd "%%i" /s/q
)
exit /b
luda-chel
17-08-2014, 16:28
Georgio, я пробую Ваш код. После выполнения bat файла: Системе не удается найти путь. Системе не удается найти указанный файл.
luda-chel
17-08-2014, 16:52
Georgio, rd "%%i" /s/q - увидела!
Теперь только пишет: Системе не удается найти указанный путь.
Может как то "VB_*" - не так пишется.
хотя даже если указываю конкретно папку VB_1 - которая реально есть, батник не срабатывает.
luda-chel, а Вы не перепутали название папки? Может быть, она называется «Users», а не «User»?
@echo off
cd /d "C:\Users"
for /f "delims=" %%i in ('
"dir /ad/b/s "VB_*" 2>nul"
') do (
rd "%%i" /s/q
)
exit /b
luda-chel
17-08-2014, 17:51
Georgio, нет конечно! Мне вообще нужно для работы, куча терминальных серверов. Пользователи выходят из программы и запускается батник, который подчищает эти папки (их на самом деле не только VB_*, INF_*, и т.д. от программы зависит. Но иногда бывает, что не правильно выходят или принудительно, то папки их остаются. Т.Е. на диске C:\User - именно так, потому что есть C:\Users - и там эти же файлы необходимеые для работы сервера. А сейчас я дома, и создала у себя просто примерно (сами понимаете)....хотелось за выходные решить задачу. в инете не сомгла ничего найти.
luda-chel, если, например, в папке «VB_INF» имеются подпапки «VB_1» и «VB_2», то после удаления папки «VB_INF» со всем её содержимым пакетный файл пытается удалить уже отсутствующие подпапки «VB_1» и «VB_2», но не обнаружив их, выдаёт сообщение об ошибке: «Системе не удается найти указанный путь.». Это нормально для такой операции. Просто не выводите на экран это сообщение, а сделайте так:
@echo off
cd /d "C:\User"
for /f "delims=" %%i in ('
"dir /ad/b/s "VB_*" 2>nul"
') do (
rd "%%i" /s/q 2>nul&& echo %%i -- yes|| echo %%i -- no
)
pause>nul
exit /b
и напишите, что получилось.
luda-chel
17-08-2014, 19:27
Ага. поняла Вашу мысль. Дело в том что в папке VB: папки "разные",к тому же файлы разные(exe, bat....). Это по существу. А сейчас у себя на ПК. просто создала папку на диске C:\User (до этого как и писала, была папка только Users, стоит 8.1-ка ОС)/После выполнения вашего скрипта:
(я через FAR смотрю)^
C:\>1.bat
C:\User\1-копия\1\2\VB_Inf800 --no
С:\User\1-копия(2)\VB_1--no
(папки: 1-копия\ и всякую ерунду просто создала для того чтобы проверить чтоб в глубине других папок он удалил VB)
НО,,,,,,
после того как я изменила название папок "1-копия" просто на 1 и 2.
то следующее:
---yes
--yes
теперь работает. без папок с русскими буквами.
Теперь в любых вариантах работает!!!
luda-chel
17-08-2014, 19:54
:yahoo:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.