我正在尝试删除cpp开发文件夹中的所有临时文件夹。我有一个cpp文件夹,我在那里玩代码。随着所有Visual Studio临时文件的建立,大小也会增加。但我不想丢失代码。
所以我认为这个命令可能有效:
for /r . %f in (*.ncb *.pdb *.obj *.idb *.pch *.ilk *.suo) do del %f
但这并不能删除隐藏文件 - .suo文件。
所以我试过了:
for /r . %f in (*.ncb *.pdb *.obj *.idb *.pch *.ilk *.suo) do del %f /a:ahrs /s
但这并没有删除隐藏文件。
然后我看到了这篇文章:
Recursively delete hidden files with exact extension
这很有意思但令人失望,因为它没有解释为什么for循环不起作用。所以,我试过了:
del /a:ahrs /S . *.suo
但这会产生错误:
Could Not Find C:\Users\angus\Documents\projects\cpp\*
肯定有办法吗?
进展:
MC ND,这有效:
@echo off
for /f "tokens=*" %%a in (
'dir /s /a-d /b *.ncb *.pdb *.obj *.idb *.pch *.ilk *.suo'
) do del "%%a" /a:H /S
虽然问题是/ a:h可能只删除隐藏文件所以我可能需要我以前的for循环用于所有其他文件以及上面的* .suo文件。
删除文件的回声并不是那么重要,但是如果你能让我知道如何处理2> nul会很好 - 我猜是引用问题。
解
感谢MC MD,此批处理文件可用于删除文件夹中的MS Visual Studio临时文件。
@echo off
for /r . %%f in (*.ncb *.pdb *.obj *.idb *.pch *.ilk) do del %%f
REM deleting hidden files (suo) is more hassle - above for loop won't work
for /f "tokens=*" %%a in (
'dir /s /a-d /b *.suo 2^>nul'
) do del "%%a" /a:h /s
更新:
它更容易 - 见下面的评论。
del /s /f /q /ah *.ncb *.pdb *.obj *.idb *.pch *.ilk *.pch *.suo
不要试图变得聪明并增加使用/ ahrs删除的文件类型 - 然后停止工作! / f选项强制删除任何情况下的只读文件。
答案 0 :(得分:0)
不,没办法。 for
命令将跳过隐藏文件。因此,有必要首先检索文件列表(包括隐藏文件),然后处理此列表。
for /f "tokens=*" %%a in (
'dir /s /a-d /b *.ncb *.pdb *.obj *.idb *.pch *.ilk *.suo 2^>nul'
) do del /q /f /a "%%a"
已编辑 - 只是在for
部分思考我错过了del
命令的参数。
答案 1 :(得分:0)
这是一种使用原始技术对文件进行删除的强大方法。
@echo off
set filespec=*.ncb *.pdb *.obj *.idb *.pch *.ilk *.suo
for %%a in (%filespec:*.=%) do attrib -r -h -s *.%%a /s
for /r %%f in (%filespec%) do del "%%f"