批处理文件删除目录中的所有文件,除了系统文件
问题描述:
我想写一个批处理文件,这将删除DELETE目录中的所有文件和目录,除了几个“重要”的文件和目录。我试图将Hidden和System属性添加到重要的文件/目录中。虽然它似乎在“del”命令上起作用,但“rmdir”仍然会删除所有内容,而不管属性如何。批处理文件删除目录中的所有文件,除了系统文件
@echo on
attrib important.txt +s +h
attrib folder +s +h
attrib picture.bmp +s +h
attrib delete.bat +s +h
del *.*
rmdir /s /q C:\Users\Lenovo\Desktop\DELETE
attrib important.txt -s -h
attrib folder -s -h
attrib picture.bmp -s -h
attrib delete.bat -s -h
pause
有没有办法做到这一点?
答
以下是在PowerShell中执行此操作的一种方法。这可以放在.ps1脚本文件中并从cmd.exe命令行运行。
将文件的只读属性设置为不删除。
(Get-Item .\important.txt).Attributes+="ReadOnly"
使用以下命令删除文件。如果您确信正确的文件将被删除,请从命令末尾删除-WhatIf
。
Remove-Item -Path * -Recurse -ErrorAction SilentlyContinue -WhatIf
您是否尝试添加属性***'r' ***(只读)? –
我已经试过了,但它仍然删除了所有内容 – ForteAnother
请更改您的'.bat'文件的名称,给它一个内部命令的名称,'delete'可能是非常有问题的。另外,为什么您认为仅仅为了这个目的而改变文件属性是值得的,我有点困惑。除非你有一个巨大的目录树,为什么不只是递归树列表删除除已知文件名之外的所有目录树。你可以用'IF'或者更好的'FINDSTR'来做到这一点。 – Compo