@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:-Dpara excluir diretórios (pastas) da lista, pois o comandodelsubseqü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 /Fem relação adircom/A:D, mas, neste caso, use o comandordem vez dedelpara delete uma pasta ; userd /Spara remover uma árvore de pastas inteira (todos os arquivos e subpastas, além da própria pasta). -
%%~pnxaexpande%%apara 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/Sflag); - considere opções adicionais de linha de comando (consulte
del /?erd /?).