2012-06-18 2 views
1

Мне нужно удалить все папки в текущей директории, которая начинается с сказать, «Foo», а затем по дате
, например, мы имеемЧтобы удалить все папки в текущей директории с шаблоном

  1. foo20120620
  2. foo20120513
  3. fooblabla

Я могу успешно удалить одну папку, которая соответствует текущей дате
пример

set FOO_FOLDER=%CD%\foo%datetimef%  

echo Y | rd /s/q %FOO_FOLDER%  

Но я не в состоянии удалить все папки, начиная с обув.

Я что-то вроде

set OLD_PATTERN="%CD%\foo"  
del %OLD_PATTERN%* 

Я гугл и попытался последовать некоторые вопросы уже задавали в этом форуме пытался, но те не поможет мне много.

Любое предложение будет очень полезно для меня.
должен быть в пакетном сценарии на стороне окна.

ответ

11

Вы можете использовать команду FOR /D.

for /d %%p in (foo*) do rd /s /q "%%p" 
+0

Вы пропустили 'IN' перед скобками – jeb

+0

Прошу прощения, в спешке я набрал неправильную команду в своем пакетном файле ..Я думаю, ур комментарий работает. Я сообщу вам через несколько минут – samantha

+0

@ Jeb, команда работает так, как ожидалось. Большое спасибо .. – samantha

1

волшебный for command in dos batch ....

из командной строки

for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q 

из пакетного файла

for /f "tokens=*" %%f in ('dir .\foo* /ad/b') do rd "%%f" /s/q 

/ф запускает команду в 'в скобках', и символизирует его. Говоря токенов = * все файл/реж имя GOE в одну переменную% е

вот пример

C:\temp>md foo3 

C:\temp>md foo2 

C:\temp>md foo1 

C:\temp>dir 
Volume in drive C is TEST 
Volume Serial Number is F47F-AAE1 

Directory of C:\temp 

18/06/2012 09:42 p.m. <DIR>   . 
18/06/2012 09:42 p.m. <DIR>   .. 
18/06/2012 09:42 p.m. <DIR>   foo1 
18/06/2012 09:42 p.m. <DIR>   foo2 
18/06/2012 09:42 p.m. <DIR>   foo3 
       0 File(s)    0 bytes 
       5 Dir(s) 131,009,933,312 bytes free 

C:\temp>for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q 

C:\temp>rd "foo1" /s/q 

C:\temp>rd "foo2" /s/q 

C:\temp>rd "foo3" /s/q 

C:\temp>dir /ad 
Volume in drive C is TEST 
Volume Serial Number is F47F-AAE1 

Directory of C:\temp 

18/06/2012 09:42 p.m. <DIR>   . 
18/06/2012 09:42 p.m. <DIR>   .. 
       0 File(s)    0 bytes 
       2 Dir(s) 131,009,933,312 bytes free 

C:\temp> 
+0

(а) Нет необходимости использовать 'для/f'. (b) Это приведет к искажению имен папок Unicode в настройках по умолчанию. (c) Синтаксис неверен и даже не работает. – Joey

+0

@Preet, Большое спасибо за подробное объяснение. это определенно помогает мне. Хотя я использовал команду Джеба, но я должен поблагодарить вас за проявленный интерес. cheers – samantha

0

Я знаю, что это старое, но я думал, что это стоило бы отметить, что для команды создает переменные параметры, которые идентифицируются с письмом, а не число (например, %% G), так, чтобы избегайте путаницы между параметрами и буквами формата имени пути, избегайте использования букв (a, d, f, n, p, s, t, x, z) в качестве параметров FOR или просто выберите букву параметра FOR, которая является вложением UPPER.

Буквы формата чувствительны к регистру, поэтому использование заглавной буквы также является хорошим способом избежать конфликтов, например. %% A, а не %% a.

Reference

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