Как я могу удалить содержимое папки из командной строки в Windows? - PullRequest
0 голосов
/ 06 декабря 2008

Я пишу сценарий развертывания с использованием MSBuild. Я хочу очистить свои веб-каталоги перед копированием всех новых файлов. Моя текущая цель «Очистить» выглядит следующим образом:

 <Target Name="Clean">
    <Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F /S" IgnoreExitCode="true" />
  </Target>

Это занимает значительное время, поскольку каждый файл удаляется из каждой подпапки отдельно.

Есть ли хороший способ удалить все из заданной папки, не удаляя ее? Я хочу сохранить свои разрешения и информацию о настройке vdir.

Ответы [ 2 ]

1 голос
/ 06 декабря 2008

Вы можете rmdir /s /q каждый подкаталог в отдельности, затем del %(DeploymentSet.LocalWebRoot)\* /Q /F ваша чистая цель. Например:

 <Target Name="Clean">
    <Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdir1 /Q /S" IgnoreExitCode="true" />
    <Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdir2 /Q /S" IgnoreExitCode="true" />
    ...
    <Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdirN /Q /S" IgnoreExitCode="true" />
    <Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F" IgnoreExitCode="true" />
  </Target>
0 голосов
/ 12 апреля 2012

Если вы не хотите указывать имена каждого подкаталога, используйте это:

<Target Name="Clean">
    <Exec Command="del /F /Q %(DeploymentSet.LocalWebRoot)\*.*" />
    <Exec Command="for /d /r &quot;%(DeploymentSet.LocalWebRoot)&quot; %v IN (*) DO rd /S /Q &quot;%v&quot;" />
</Target>
...