@echo off
for /F "delims=" %%a in ('
dir G:\*.* /b /s /A:-D
') do if not exist "F:%%~pnxa" echo del "%%~a" >> C:\Users\billy\Desktop\files.txt
pause
Explicação:
-
/A:-D
para excluir diretórios (pastas) da lista, pois o comandodel
subseqüente excluiria os arquivos em vez do diretório (de acordo comdel /?
: se um diretório for especificado, todos os arquivos do diretório serão excluídos, mas a própria pasta não será removido); - trata as pastas à parte: use outra opção
for /F
em relação adir
com/A:D
, mas, neste caso, use o comandord
em vez dedel
para delete uma pasta ; userd /S
para remover uma árvore de pastas inteira (todos os arquivos e subpastas, além da própria pasta). -
%%~pnxa
expande%%a
para o caminho + nome + extensão completos, incluindo um líder\
(noG:
de especificação de disco); -
del "%%~a"
double citou o caminho completo para tratar os caminhos com espaços corretamente; - Eu recomendo
"delims="
em vez de"tokens=*"
para tratar possíveis espaços iniciais em nomes de arquivos corretamente (isso pode acontecer sem/S
flag); - considere opções adicionais de linha de comando (consulte
del /?
erd /?
).