Windows 8 批处理文件问题

Windows 8 批处理文件问题

批量编程

您好!我正在尝试编写一个批处理程序,它可以删除我计算机 C: 位置和桌面上所有具有相同扩展名的文件。但它确实有效。

这是我完成的第一个 bat 文件,但启动后没有任何反应。

@echo off
del "C:\*.vsdx" /s /q

我已经编写了另一个已经测试过的程序:

@echo off
del "H:\*.vsdx" /s /q
del "C: \*.vsdx" /s /q
del "F:\*.vsdx" /s /q
del "Desktop:\*.vsdx" /s /q

关于这个程序,运行后我发现.vsdx设备 H 和 F 中的文件消失了。但是该位置的文件C:以及我创建的一些其他文件Documents并没有消失。所以我想请你帮忙解决这个问题。

问题摘要:我想编写一个批处理文件,可以从我的计算机中删除所有具有相同扩展名的文件。提前致谢

答案1

正确的做法是:

for /f "delims=" %i in ('dir C:\Path\to\folder\*.vsdx /s /b') do del %i /f /q

在批处理文件中,使用双百分号而不是一个 ( %%i)。

C:\Path\to\folder是实际路径的占位符。

虽然cmd不是很强大,但我建议您使用PowerShell。

PowerShell 方式:

Get-ChildItem -Path "C:\Path\to\folder" -Force -Recurse -Filter "*.vsdx" | Remove-Item

答案2

另一种方式是:

@echo off

for %%i in (H,C,F)do echo\ del/s /q /f /a "%%~i:\*.vsdx"

  • 或者,在 PowerShell 中:
'H','C','F'|% {ls -re $($_+':\*.vsdx')|Remove-Item -force -WhatIf}

已提议使用echo\-WhatIf,这会让您预览操作,而无需实际删除文件。

  • 要有效删除文件,请删除:
@echo off

for %%i in (H,C,F)do echo\ del/s /q /f /a "%%~i:\*.vsdx"
'H','C','F'|% {ls -re $($_+':\*.vsdx')|Remove-Item -force -WhatIf}

其他资源/ CMD


其他资源/ PS1

相关内容