2017-10-13 71 views
0

我想寫一個批處理文件,這將刪除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 

有沒有辦法做到這一點?

+0

您是否嘗試添加屬性***'r' ***(只讀)? –

+0

我已經試過了,但它仍然刪除了所有內容 – ForteAnother

+0

請更改您的'.bat'文件的名稱,給它一個內部命令的名稱,'delete'可能是非常有問題的。另外,爲什麼您認爲僅僅爲了這個目的而改變文件屬性是值得的,我有點困惑。除非你有一個巨大的目錄樹,爲什麼不只是遞歸樹列表刪除除已知文件名之外的所有目錄樹。你可以用'IF'或者更好的'FINDSTR'來做到這一點。 – Compo

回答

0

以下是在PowerShell中執行此操作的一種方法。這可以放在.ps1腳本文件中並從cmd.exe命令行運行。

將文件的只讀屬性設置爲不刪除。

(Get-Item .\important.txt).Attributes+="ReadOnly" 

使用以下命令刪除文件。如果您確信正確的文件將被刪除,請從命令末尾刪除-WhatIf

Remove-Item -Path * -Recurse -ErrorAction SilentlyContinue -WhatIf 
相關問題