如何删除目录中的内容而不删除目录本身?命令外壳或Powershell

时间:2018-10-01 16:37:39

标签: powershell cmd

cd C:\ProgramData\Microsoft\Group Policy\History
>del *

这是我厌倦用来删除“历史记录”文件夹中内容的内容。尝试保留历史记录目录时

我要删除6个文件,但是文件名过长。 我需要反复进行&&文件名更改。

最终,我将其转换为脚本。

4 个答案:

答案 0 :(得分:1)

一个简单的cmd / batch解决方案

pushd "C:\ProgramData\Microsoft\Group Policy\History" && ( rmdir . /s /q 2>nul & popd )

只需将当前活动目录更改为指示的目录(pushd,如果此命令未失败(&&有条件的执行操作符),则删除当前文件夹及其所有内容({{1 }})并返回上一个活动目录(rd

请注意,popd命令将无法删除当前的活动目录(首先更改到该目录的原因),并且无法将错误重定向到rd流,以避免显示尝试执行失败的操作。删除它。

答案 1 :(得分:0)

命令外壳:

PROMPT> cd C:\ ProgramData \ Microsoft \ Group Policy \ History PROMPT> del / s / q

答案 2 :(得分:0)

在PowerShell中:

Remove-Item 'C:\ProgramData\Microsoft\Group Policy\History\*' -Recurse -Force

在CMD中:

del /q "C:\ProgramData\Microsoft\Group Policy\History\*"
for /d %d in ("C:\ProgramData\Microsoft\Group Policy\History\*") do @rmdir /s /q "%~fd"

del /s /q在CMD中是不够的,因为它仅删除文件,而不删除文件夹。

答案 3 :(得分:0)

没有.字符的目录将不会使用*.*删除。请改用*。您可能需要以管理员身份运行。

当您确信将删除正确的项目时,请从WhatIf cmdlet中删除Remove-Item

Remove-Item -Path "$Env:ProgramData\Microsoft\Group Policy\History\*" -Recurse -WhatIf