Ok. Portanto, não é a Guest
-account, mas Local account
.
Primeiro, algumas pequenas coisas que notei no seu roteiro.
- Se você for excluir tudo com mais de 7 dias em todo o perfil (como seu script está fazendo), você terá problemas. Você também excluirá muitos arquivos em
appdata
, "configurações do programa", etc ... Você não quer isso porque esses programas podem se tornar inutilizáveis. O padrão é que você não vê esses arquivos / diretórios, mas se você usar o prompt de comando, eles estarão lá. (Tente configurar o explorador para exibir arquivos ocultos ou digitarC:\Users\Internet\appdata
na barra de endereço) - Ainda não recebo nada com
/M .
. Eu preciso usar/M *.*
ou omiti-lo completamente. (o padrão é/M *
) - Se você estiver executando isso como você mesmo (e não como "internet"), não terá permissão suficiente para excluí-los. (Daí o ícone de cadeado no arquivo) Você precisa apropriar-se dos arquivos antes de poder excluí-los. Você poderia tentar executar o script como administrador, mas não tenho certeza se isso ajuda.
Existem várias maneiras de resolver esse problema. Abaixo eu menciono outra abordagem sobre como redefinir a conta inteira. Mas aqui está um script que exclui arquivos com mais de 7 dias.
Ele altera o diretório atual para C:\Users\Internet
(o popd
o altera). Em seguida, ele percorre um determinado conjunto de diretórios dos quais você deseja excluir arquivos. Você vê que eu não especifiquei o whole appdata
-dir mas incluí o AppData\Local\Temp
e Temporary Internet Files
. Adicione seu próprio se você assim desejar. Ele assumirá a propriedade (para você) em todos os arquivos e diretórios especificados. Em seguida, ele fornecerá Everyone
de direitos para esses arquivos (para que ele não seja interrompido com seus programas). Depois disso, apenas os arquivos com mais de 7 dias serão excluídos. Você precisa especificar del /a
para incluir a exclusão de arquivos ocultos.
(adicionei algumas verificações na parte superior do arquivo em lote para ter certeza de que você está no diretório correto. Você realmente não quer fazer isso em outro diretório acidentalmente;;)
@echo off
PUSHD C:\Users\Internet
IF /I "%cd%"=="C:\Users\Internet" GOTO OK
ECHO Oops, CD didn't work. You really don't want to do this in another directory !!!
POPD
EXIT/b
:OK
SET "dirs=AppData\Local\Temp:Contacts:Desktop;Documents:Downloads:Favorites:Links:Music:Pictures:Videos:AppData\Local\Microsoft\Windows\Temporary Internet Files"
FOR %%d IN ("%dirs::=" "%") DO (
TAKEOWN /R /D Y /F %%d
ICACLS %%d /T /GRANT Everyone:F
FORFILES /P %%d /S /D -7 /C "cmd /c del /q /a "@path""
)
POPD
Isso não excluirá "configurações de programa", mas também deixará outros diretórios temporários (exceto AppData \ Local \ Temp) sozinhos. Portanto, se você tiver outros diretórios, poderá incluí-los na set
-line.
Outra abordagem seria redefinir toda a conta do usuário. Você poderia fazer
net user internet /delete
net user internet /add
rd c:\users\internet /s/q
Você precisa fazer isso como administrador. Mas desta forma todas as configurações o usuário se perde. Não só mais velho que 7 dias. Isso vai limpar tudo. Não tenho certeza se isso é desejado. No entanto, é o "mais limpo". Se for um computador público, você poderá fazer isso todos os dias (ou todos os dias). Você também pode fazer backup do perfil e restaurá-lo, mas isso também exclui os arquivos mais novos e redefine a conta para um momento / estado específico.
Por que apenas arquivos com mais de 7 dias devem ser excluídos? Se você realmente deseja obter arquivos com menos de 7 dias, precisa do primeiro script.