В настоящее время мой простой пакетный скрипт выглядит так:

@echo off
for /D /r C:\myprojects\AIS\ %%G in (_svn) do rd /S /Q %%G
pause

К сожалению, при этом пропускаются все каталоги, в которых есть пробел, например, каталог под названием «Мои проекты». Как мне обойти это и убедиться, что я также просматриваю этот каталог?

0
Chris 4 Сен 2009 в 22:25
Это винда (дос)? возможно, тег «пакетный файл»
 – 
Jared Updike
4 Сен 2009 в 22:26
Да, это. Я поставлю на него тег «пакетный», но я также включу «пакетный файл», если хотите.
 – 
Chris
4 Сен 2009 в 22:28
Извините, не видел, мозг умер в пятницу утром
 – 
Jared Updike
4 Сен 2009 в 22:29
Не беспокойтесь :) Я все равно добавил его, чтобы все было поконкретнее.
 – 
Chris
4 Сен 2009 в 22:29

2 ответа

Хм... кажется, у меня работает. Вы пробовали эхо вместо этого?

C:\tmp> TREE /A C:\tmp\xxx
C:\TMP\XXX
\---one one
    \---two two

C:\tmp> FOR /D /R c:\tmp\xxx %I IN (_svn) DO @ECHO RD "%I"
RD "c:\tmp\xxx\_svn"
RD "c:\tmp\xxx\one one\_svn"
RD "c:\tmp\xxx\one one\two two\_svn"

Вам, вероятно, нужны кавычки вокруг аргумента rmdir. Если вы хотите быть по-настоящему параноиком, то вместо этого используйте %~I, чтобы защититься от хаоса, который в противном случае вызвал бы FOR /D /R ... %I IN ("_svn").

2
D.Shawley 4 Сен 2009 в 23:13

Можете ли вы поставить кавычки вокруг имени каталога?

1
Jack T. ColtonJack T. Colton 4 Сен 2009 в 22:28
Я пробовал это: для /D /r C:\electionscanadaprojects\AIS\ "%%G" в (_svn) сделать rd /S /Q "%%G", так как %%G содержит имя каталога, но не кости.
 – 
Chris
4 Сен 2009 в 22:29
Вам нужно как-то избегать кавычек? Я просто предполагаю, что я не DOS-парень (это DOS, верно?)
 – 
Jack T. Colton
4 Сен 2009 в 22:30
Да это дос. Я не думаю, что вам нужно избегать кавычек, так как это обычно работает, если вы указали прямой путь к каталогу. Однако я думаю, что его хранение в переменной вызывает у меня проблемы. (Я знаю пакетные сценарии. Может ошибаться)
 – 
Chris
4 Сен 2009 в 22:33
Так это нехорошо, верно? for /D /r C:\electionscanadaprojects\AIS\ \"%%G\" in (_svn) do rd /S /Q "%%G"
 – 
Jack T. Colton
4 Сен 2009 в 22:35
1
Быстрое предположение, не должны ли кавычки быть вокруг второго экземпляра %%G, а не вокруг первого?
 – 
Philip Kelley
4 Сен 2009 в 22:39