Como excluo as árvores de diretórios no remoto por meio do arquivo bat?

1

Eu vi a pergunta " Como excluo árvores de diretórios por meio do console no Windows 7? " Gostaria de fazer a mesma coisa com as seguintes exceções:

  • O diretório existe em uma unidade externa.
  • O caminho para o diretório tem um espaço na string.
  • Eu definitivamente quero isso em um arquivo de lote, e não na linha de comando.

Então, para mim, estou lidando com:

del /s /f /q p:\group_share\my share\*.*
for /f %%f in ('dir /ad /b p:\group_share\my share\') do rd /s /q p:\group_share\my share\%f

Obviamente, eu poderia colocá-lo em uma variável:

set FULL_PATH="p:\group_share\my share\"

Então:

del /s /f /q %FULL_PATH%*.*
for /f %%f in ('dir /ad /b %FULL_PATH%') do rd /s /q %FULL_PATH%%f

Eu tentei adicionar citações em torno do% FULL_PATH% ergo: "% FULL_PATH" ... mas recebo isto:

The system cannot find the file specified.

A propósito, a primeira linha funciona se eu colocar: p: \ group_share \ meu compartilhamento \ com aspas em torno dele:

 del /s /f /q "p:\group_share\my share\"*.*

Alguém pode me dar uma sugestão ou algo para tentar? Eu tentei todos os tipos de permutações de aspas, sem aspas etc Obrigado Geo

    
por George Geschwend 17.10.2014 / 18:54

1 resposta

1

Você parece estar tornando isso desnecessariamente complicado - tudo que você precisa é: -

pushd %FULL_PATH%
rd /s /q .
popd

Ao mover para o diretório de destino, você protege my share da exclusão. Observe que cd e pushd não precisam de aspas, pois elas usam apenas um argumento.

    
por 17.10.2014 / 19:25

Tags