我想删除当前文件夹和所有子文件夹中的所有jpg
,ini
以及更多类型,然后删除所有空文件夹(递归)。其中一些文件是只读或隐藏的,甚至设置为系统,因此只有del /s *.jpg
不能删除它们。问题是,当我这样做时,语法似乎使用了逻辑and
:del /a:h /a:r /s *.jpg
因此只删除了隐藏文件,而不仅删除了隐藏文件。有没有办法让它改为使用逻辑or
?
我无法找到使其正常工作的示例,而无需通过较小的更改粘贴相同的行。
关于rmdir
,是否必须对当前文件夹执行cd
?因为它说下面的代码中存在语法错误:
del /s *.jpg
del /a:h /a:r /s *.jpg
rmdir /s /q
pause
EDIT3:我认为现在它删除所有内容:del /s /f /a:h /a:a *.jpg
我发现这是为了删除空文件夹,但如果文件夹设置为只读则它不起作用:
答案 0 :(得分:2)
未经测试,但我相信以下内容可行:
@echo off
:: Remove readonly / hidden / system attributes from all files of interest
attrib -r -h -s *.jpg /s
attrib -r -h -s *.ini /s
rem etc...
:: Delete the files of interest
del /s *.jpg *.ini
:: for each folder, sorted descending by full path (children come before parent)
for /f "delims=" %%F in ('dir /b /ad /s *^|sort /r') do (
REM check if folder is empty
dir /b /a "%%F" | findstr "^" >nul || (
REM remove directory with /S /Q works, even if folder is read only
rd /s /q "%%F"
)
)