批量编程
您好!我正在尝试编写一个批处理程序,它可以删除我计算机 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
: