2016-08-24 5 views
0

У меня есть каталоги, как:Удалить все из подпапок через пакетный файл

c:\Project\Current\stage1\somefiles and some folders 
c:\Project\Current\stage2\somefiles and some folders 
c:\Project\Current\stage3\somefiles and some folders 
c:\Project\Current\stage4\somefiles and some folders 
c:\Project\Current\stage5\somefiles and some folders 
. 
. 
. 
c:\Project\Current\stage500\somefiles and some folders 

Я хочу, чтобы создать пакетный файл, так что все внутри stage1, stage2 ..., stage500 будут удаляются, но а не какие-либо другие папки, чтобы я все еще мог видеть указанные выше каталоги, но пустые.

Может кто-нибудь помочь?

+0

Если вы нашли собственное решение, это замечательно, но, пожалуйста, отправить его в ответ, а не как правкой вопрос. – Flexo

+0

@Flexo, сделал это. – Viki2016

ответ

1

Я нашел ответ и очень просто

for /d %%X in (c:\Project\Current*) Do (
for /D %%I in ("%%X\*") do rmdir /s/q "%%I" 
del /F /q "%%X\*") 

Спасибо за помощь каждого ..

1

Попробуйте это:

@echo off 
CD c:\Project\Current /d 
for /f "tokens=*" %%f in ('dir /a-d /s /b') do (
    del "%%f" /q /f 
) 

Есть три важные части:

for /f "tokens=*" %%f означает, что мы перебираем все линии, которые генерируются с помощью следующей команды и временно сохранить каждую строку в переменных %%f для каждой итерации.

dir /a-d /s /b является основой кода. Это будет список всех файлов внутри c:\Project\Current\, включая все подпапки. /a-d означает, что каталоги будут игнорироваться, поскольку мы не хотим, чтобы они были удалены. /s означает, что мы ищем любую подпапку. /b устанавливает выходной формат в простой режим, так что каждая строка вывода будет содержать только полный путь к файлу.

del "%%f" /q /f просто удаляет файл, который хранится в %%f. /q означает «не спрашивайте меня, если я уверен, просто удалите его», и /f означает, что любой файл, даже если он отмечен как системный файл или невидимый или защищенный, будет удален. Не пропустите кавычки около %%f, так как в противном случае пути, содержащие пробелы, вызовут проблемы.

+0

Делает что-то странное, я также добавил паузу после него и в списке журналов командной строки появляется: C: \ WINDOWS \ system32> DEL/S/F/QC: \ tmp1 каталог имя C: \ Users \ ME \ AppData \ Local \ Temp \ Temp1_en_sql_server_2014 _standard_edition_with_service_pack_1_x86_dvd_6669994.zip \ en_sql_server_2014_sta ndard_edition_with_service_pack_1_x86_dvd_6669994 \ 1033_ENU_LP \ x86 \ Setup \ sql2008s оддержка \ pfiles \ sqlservr \ 100 \ кеуген \ 1033 слишком долго. – Viki2016

+0

Я изменил свой ответ. Попробуйте новый код. – MichaelS

+0

Извините, так как я не эксперт, похоже, все еще есть проблема с этим, он не меняет каталог (CD), я пытался его вручную изменить, и он работает, но в этом пакетном файле система не меняет каталог и придумать то же самое, что и в прошлый раз. жаль, что это боль. – Viki2016

Смежные вопросы