Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/41: Рейтинг темы: голосов - 41, средняя оценка - 4.93
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 325
#1

Удаление пустых папок в папке, не через xcopy

20.01.2011, 20:52. Просмотров 7377. Ответов 7
Метки нет (Все метки)

Есть папка "input" в ней куча папок...
Надо удалить все пустые папки... Не через "хсору" желательно...
Желательно удалить все файлы кроме "*.blp" Но не обяз, видел что то такое...

Будет время, помогите...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2011, 20:52
Ответы с готовыми решениями:

Удаление пустых скрытых папок с подпапками
Хочется написать cmd-файл, который при запуске из какой то папки будет...

Копирование папки с использованием команды XCOPY с заменой одноимённых файлов в папке назначения
Всем привет как сделать написать бат который копировал бы папки с заменой...

Скрипт для удаления пустых папок.
Доброго времени суток.Напишите такой скрипт,буду очень благодарен.

Проверка целостности файлов через XCOPY и анализ кода возврата ошибки
Всем доброго времени суток! Прошу помощи в решении данного задания. "Проверка...

Создать несколько папок в папке
Добрый день. Обращаюсь к тем, у кого есть немного свободного времени....

7
dn90
69 / 59 / 3
Регистрация: 07.09.2010
Сообщений: 87
21.01.2011, 13:04 #2
Удаление пустых папок и файлов (исключая расширение blp)
Действует только в текущей директории
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
set q=blp
 
for /f "tokens=*" %%a in ('dir /b ".\*"') do call :Q "%%a"
exit
 
:Q
set x=%~x1
if defined x goto :W
if not defined x goto :E
goto :EOF
 
:W
if "%x%"==".bat" goto :EOF
if not "%x%"==".%q%" del /q %1
goto :EOF
 
:E
set n=0
for %%c in ("%~1\*") do if exist "%%c" set /a n+=1
if "%n%"=="0" rd /q %1
goto :EOF
Если надо удалить файлы не blp в поддерикториях
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
set /p q=
for /f "tokens=*" %%a in ('dir /b /s ".\*"') do call :Q "%%a"
exit
:Q
set x=%~x1
if "%x%"==".bat" goto :EOF
if not "%x%"==".%q%" del /q %1
goto :EOF
1
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 325
21.01.2011, 14:02  [ТС] #3
К сожалению не работает...
Запускаем... Закрывается...
Вот текст работы, ечо он.
Код
D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set q=png

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>for /F "tokens=*" %a in ('dir /b ".\*"') do call :Q "%a"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>call :Q "dddd.bat"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set x=.bat

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if defined x goto :W

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if ".bat" == ".bat" goto :EOF

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>call :Q "input"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set x=

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if defined x goto :W

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if not defined x goto :E

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set n=0

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>for %c in ("input\*") do if exist "%c" set /a n+=1

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if exist "input\fggg.txt" set /a n+=1

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if exist "input\Hair00_00.png" set /a n+=1

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if "2" == "0" rd /q "input"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>goto :EOF

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>call :Q "ss.bat"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set x=.bat

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if defined x goto :W

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if ".bat" == ".bat" goto :EOF

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>call :Q "ss_starter.bat"

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>set x=.bat

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if defined x goto :W

D:\BlooD\Giper_Soft\Коныертировка_и_открытие_не_стандартных_файлов\WoW_Tools\BLP
Converter_8_1\ss>if ".bat" == ".bat" goto :EOF
Папка с которой работаем называется "Input" Только файл не блп уже а пнг я изменил соответственно set q=png

Вод дерево папки
Код
D:\BLOOD\GIPER_SOFT\КОНЫЕРТИРОВКА_И_ОТКРЫТИЕ_НЕ_СТАНДАРТНЫХ_ФАЙЛОВ\WOW_TOOLS\BLP
CONVERTER_8_1\SS\INPUT
/   fggg.txt
/    Hair00_00.png
/
/------Femal3
/       ssd.txt
/
/------Female
\------Male
        BrokenEyeGlowBlueGreen.png
        BrokenMaleFaceLower00_01.png
        hjhj.txt
Сам батник в папке "...ФАЙЛОВ\WOW_TOOLS\BLPCONVERTER_8_1\SS"

Спасибо за внимание.
0
dn90
69 / 59 / 3
Регистрация: 07.09.2010
Сообщений: 87
21.01.2011, 14:19 #4
dddd.bat - пропускает
input - содержит 2 файла
ss.bat - пропускает
ss_starter.bat - пропускает

чтобы удалял bat, удали строку (if "%x%"==".bat" goto :EOF)
1
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 325
22.01.2011, 09:52  [ТС] #5
Сори вы меня не так поняли...
Есть папка, смотрите дерево папки "INPUT" (выше)
Прога должна удалить папки:
"Femal3" - Так как в ней есть файлы но нет *.png.
"Female" - Так как она пуста.
из папки "Input" файл fggg.txt и из папки "Male" файл "hjhj.txt"

То есть по другому будет так, сканит папку "INPUT", удаляет все файлы кроме *.png, потом сканирует снова, и удаляет все пустые под-папки естественно в том же "INPUT"
Вот... Спасибо за внимание...

И сори, как понять вот это ?
Bash
1
2
if defined x goto :W
if not defined x goto :E
if /? Писал, не дошло...
0
dn90
69 / 59 / 3
Регистрация: 07.09.2010
Сообщений: 87
22.01.2011, 12:19 #6
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
set file=png
set folder=INPUT\
 
for /f "tokens=*" %%a in ('dir /b ".\%folder%*"') do call :IF "%%a"
for /f "tokens=*" %%a in ('dir /b ".\%folder%*"') do call :IF "%%a"
exit
 
:IF
set x=%~x1
if defined x goto :FILE
if not defined x goto :FOLDER
goto :EOF
 
:FILE
if "%x%"==".bat" goto :EOF
if not "%x%"==".%file%" del /q %1
goto :EOF
 
:FOLDER
set n=0
for %%b in ("%folder%%~1\*") do call :FOLDER-FILE "%%b"
for %%c in ("%folder%%~1\*") do if exist "%%c" set /a n+=1
if "%n%"=="0" rd /q "%folder%%~1"
goto :EOF
 
:FOLDER-FILE
set x2=%~x1
if not "%x2%"==".%file%" del /q %1
goto :EOF
Объяснение:
@echo off
set file=png
set folder=INPUT\ проверяемая папка, можно ставить так folder1\folder2\...\

for /f "tokens=*" %%a in ('dir /b ".\%folder%*"') do call :IF "%%a" В проверяемой папке берет объект (файл, папку) и переходит в раздел :IF
for /f "tokens=*" %%a in ('dir /b ".\%folder%*"') do call :IF "%%a"
exit

:IF
set x=%~x1 от объекта оставляет расширение (см. for /?) если у объекта нет расширения, то х будет пустой
if defined x goto :FILE если х имеет значение, то переходит в :FILE
if not defined x goto :FOLDER если х пустой, то переходит в :FOLDER
goto :EOF

:FILE
if "%x%"==".bat" goto :EOF если у файла расширение bat, переходит обратно в call
if not "%x%"==".%file%" del /q %1 если у файла расширение не png - удаляется
goto :EOF

:FOLDER
set n=0 %n% - счетчик количества файлов
for %%b in ("%folder%%~1\*") do call :FOLDER-FILE "%%b" на подобие раздела :IF
for %%c in ("%folder%%~1\*") do if exist "%%c" set /a n+=1 при нахождении файла к %n% прибавляется 1
if "%n%"=="0" rd /q "%folder%%~1" если %n%=0 папка удаляется
goto :EOF переход в call

:FOLDER-FILE :FOLDER для обработки в папке INPUT; :FOLDER-FILE - для обработки в подпапке
set x2=%~x1
if not "%x2%"==".%file%" del /q %1
goto :EOF
1
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 325
23.01.2011, 08:57  [ТС] #7
Спасибо большое, работает, только не хочет удалять в папке "Инпут", файл "fggg.txt"
1 файл в коренной папке не беда )


Спасибо большое.
0
dn90
69 / 59 / 3
Регистрация: 07.09.2010
Сообщений: 87
23.01.2011, 09:44 #8
недописал)) забыл в папке INPUT создать файлы))

в секции :FILE строку
Windows Batch file
1
if not "%x%"==".%file%" del /q %1
замени на
Windows Batch file
1
if not "%x%"==".%file%" del /q "%folder%%~1"
он файл искал в текущей директории а не в INPUT
2
23.01.2011, 09:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2011, 09:44

Удаление всех пустых файлов
1.Написать bat-файл, который удаляет все пустые файлы в каталоге, указанном в...

Удаление пустых каталогов и подкаталогов
Всем привет! Хотелось бы в определенном каталоге удалить все пустые каталоги и...

Вывод количества папок и файлов в заданной папке и их размера
Надо написать скрипт, который будет выводить количество папок и файлов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru