Command line 使用批处理文件,如何删除所有不在windows目录中的文件?

Command line 使用批处理文件,如何删除所有不在windows目录中的文件?,command-line,batch-file,prompt,Command Line,Batch File,Prompt,我有一个litle项目,我想删除c:\windows操作系统之外且不需要的所有文件。因此,我需要创建一个我想要保留的列表,即boot.ini c:\windows等,然后删除所有其他内容。我见过使用forFile的示例,但我可以肯定扩展名将在机器上。有人知道我如何创建排除列表,然后执行删除吗?这里有一个不应该触摸的顶级文件夹列表: $Recycle.Bin Documents and Settings [C:\Users] inetpub MSOCache Program Files Progr

我有一个litle项目,我想删除c:\windows操作系统之外且不需要的所有文件。因此,我需要创建一个我想要保留的列表,即boot.ini c:\windows等,然后删除所有其他内容。我见过使用forFile的示例,但我可以肯定扩展名将在机器上。有人知道我如何创建排除列表,然后执行删除吗?

这里有一个不应该触摸的顶级文件夹列表:

$Recycle.Bin
Documents and Settings [C:\Users]
inetpub
MSOCache
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
XP上的
文档和设置
是一个文件夹,Vista和7上是指向
用户
文件夹的链接

MSOCache
也可以安全删除。然而,许多安装程序包被缓存在那里,并用于各种MS产品的更新/修复。因此,我建议保留它

程序文件(x86)
是在64位操作系统上安装的32位应用程序的重定向
程序文件。然而,我见过一些应用程序安装在这个文件夹中,而不是安装在32位操作系统上的
程序文件中,所以我建议保留它并手动检查它的内容,以决定是否应该删除它


更新:没有可靠的方法只列出操作系统文件。列表在操作系统版本、SKU、体系结构、已安装的操作系统功能、硬件驱动程序、操作系统更新和已安装的应用程序之间可能存在很大差异。

不要忘记备份您实施的任何方法

::您可以定义参数,使其知道不包括您不需要的文件夹,并按此方式进行检查

IF "%2" == "" 
IF "%1" == "RunMyBatchFile" ^


FOR %%i IN (""%filter%) ^  ::directory name goes in here that you want to iterate over todelete
DO (^::Do your stuff, make sure to use echo to see the output on the cmd
) ^

除了关于c:\Windows以外的其他文件夹的注释外,许多常见的Windows组件都位于Program Files\common Files中,Program Files下的应用程序文件夹可能有Windows无法正常启动的驱动程序;防病毒、图形和其他非默认硬件驱动程序


这里是龙。

如果您想摆脱用户数据文件,只需查看几个地方,例如
%USERPROFILE%\AppData
。实际目录名因操作系统(XP/Vista/7)而异


但不要对管理员或你自己这样做

您可能会破坏您的注册表。从ghost或类似的备份中恢复驱动器怎么样?我想你是在倒退。除非你想杀死所有的应用程序,否则只需删除用户帐户。@bliss:你不能从运行的Windows.dragons中删除注册表!基本上,我想删除用户内容,而不使用操作系统,避免操作系统警告thnxsure—但是,如果我想删除所有用户数据,那么只运行操作系统需要哪些文件?感谢您的建议查看下面的列表我将使用/F%i in('dir/s/b“USERPROFILE%”)中的/F%i删除%I,如果用户将其内容放入其用户配置文件中,则应删除该内容,而不是在出现错误时停止。再次感谢