当我在 cmd 中运行脚本时,出现无法找到 c:\users\internet\downloads\new.txt
是不是因为 windows7 上的用户帐户上有一个锁图标,如果我将位置更改为 c:\test 文件夹,脚本就可以正常工作
forfiles.exe /P “C:\users\Internet” /S /M。/D -7 /C "cmd.exe /c del /Q ""@路径""
我需要做的是每 7 天删除一次我的文档和下载文件夹中剩余的文件,这是一个工作中每个人都使用的通用库帐户,即 Windows 7 来宾帐户。
答案1
好的。所以它不是Guest
-account 而是Local account
。
首先,我注意到有关你的脚本的一些小细节。
- 如果你要删除一切超过 7 天整体profile(就像你的脚本所做的那样)你会遇到麻烦。你还会删除
appdata
“程序设置”等中的大量文件……你不希望这样,因为这些程序可能会变得无法使用。默认情况下,你看不到这些文件/目录,但如果你使用命令提示符,它们就会在那里。(尝试将资源管理器设置为显示隐藏文件或C:\Users\Internet\appdata
在地址栏中输入) - 我仍然没有得到任何结果
/M .
。我需要使用/M *.*
或完全省略它。(默认为/M *
) - 如果您以自己的身份(而不是“互联网”)运行此脚本,则您没有足够的权限删除它们。(因此文件中有锁定图标)您需要先取得文件的所有权,然后才能删除它们。您可以尝试以管理员身份运行脚本,但我不确定这是否有帮助。
有几种方法可以解决这个问题。下面我提到了另一种重置整个帐户的方法。但这里有一个脚本,可以删除超过 7 天的文件。
它将当前目录更改为C:\Users\Internet
(popd
然后将其改回)。然后它循环遍历要从中删除文件的给定目录集。你看,我没有指定所有的 appdata
-dir 但确实包括AppData\Local\Temp
和Temporary Internet Files
。如果您愿意,可以添加您自己的。它将(为您)取得所有指定文件和目录的所有权。然后它将授予Everyone
这些文件权限(因此它不会中断它们的程序)。之后,只有超过 7 天的文件才会被删除。您需要指定del /a
包括删除隐藏文件。
(我在批处理文件的顶部添加了一些检查,以确保你在正确的目录中。你真的不想意外地在另一个目录中执行此操作。;)
@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
这不会删除“程序设置”,但也会保留其他临时目录(AppData\Local\Temp 除外)。因此,如果您有其他目录,则可以将它们包含在行中set
。
另一种方法是重置整个用户帐户。你可以这样做
net user internet /delete
net user internet /add
rd c:\users\internet /s/q
您需要以管理员身份执行此操作。但这样所有设置用户确实丢失了。不仅是 7 天前的数据。它会清除所有内容。不确定是否需要这样做。但它是“最干净的”。如果是公用计算机,您可以每隔一天(或每天)执行此操作。您还可以备份配置文件并恢复它,但这也会删除较新的文件并将帐户重置为特定时间/状态。
为什么只应删除 7 天前的文件?如果您确实想要获取 7 天前的文件,则需要第一个脚本。