5

我想使用 Windows 批处理文件查找并删除网络驱动器 H: 上的每个 desktop.ini 和 Recycle Bin.BIN 文件。我目前有这个:

@echo About to delete all desktop.ini and Recycle Bin.BIN files from H:, press Ctrl+C to cancel or Enter to continue.
@pause
@H:
@for /f "usebackq" %%i in (`dir /s /b /x /A:H ^| find "desktop.ini"`) do del /A:H "%%i"
@for /f "usebackq" %%i in (`dir /s /b /x /A:RH ^| find "Recycle Bin.BIN"`) do del /A:RH "%%i"
@echo Deleting complete, press any key to exit.
@pause

哪个有效,但对于名称中有空格的子文件夹中的任何文件,它会因“找不到文件”错误而失败。有什么建议可以解决这个问题吗?

4

4 回答 4

11

对我有用的解决方案是

创建 bat 文件“delete_all_desktop_ini.bat”

del /s /q /f /a ".\desktop.ini" 

把它放在一个文件夹中并运行它

它将删除该文件当前目录和子目录中的所有桌面inis。

我把它放在谷歌驱动器中的项目文件夹中

于 2016-04-14T12:09:13.113 回答
8

测试一下:

我已将回收站名称更改为我在 Windows 8 中看到的名称。名称随 Windows 的不同版本而变化。

@echo off
del /s /q /f /a "h:\desktop.ini" 
del /s /q /f /a "h:\$Recycle.Bin\*.*"
于 2013-09-30T11:37:25.960 回答
1

出现问题是因为默认情况下空格是for命令的分隔符,但您可以使用该delims选项更改它。如果您选择一个永远不会出现在文件路径中的字符,那么它应该可以正常工作:

@echo About to delete all desktop.ini and Recycle Bin.BIN files from H:, press Ctrl+C to cancel or Enter to continue.
@pause
@H:
@for /f "usebackq delims=|" %%i in (`dir /s /b /x /A:H ^| find "desktop.ini"`) do del /A:H "%%i"
@for /f "usebackq delims=|" %%i in (`dir /s /b /x /A:RH ^| find "Recycle Bin.BIN"`) do del /A:RH "%%i"
@echo Deleting complete, press any key to exit.
@pause
于 2013-09-30T11:13:14.617 回答
0
for /r "H:\" %%a in (desktop.ini $Recycle.Bin) do if exist "%%~fa" echo del /f "%%~fa"

试试看,让它echo从脚本中删除。

于 2013-09-30T12:29:15.710 回答