- 我的操作系统是视窗 7;
- 以 dot(.( 开头的文件夹是隐藏文件夹;
- 在我的目标文件夹中有几个子文件夹,如.android,.cache等。
- 我想要的是找到所有文件夹,然后删除它们及其内容。
-
我所做的是在cmd文件中运行follow命令,但似乎根本无法正常工作:
for /f "delims=" %%i in ('dir "%targetfolder%\.android" /s /b /a') do (echo "%%i" && rd /s /q "%%i") for /f "delims=" %%i in ('dir "%targetfolder%\.cache" /s /b /a') do (echo "%%i" && rd /s /q "%%i")
有人有任何解决方案吗?
我构建了下面的示例,它在我的所有测试中都有效。 导致它失败的唯一条件是将父目录定位到批处理文件,因为它无法删除工作进程当前正在执行的内容。
使用"推送"解决了这种情况。 在任何正常使用中,"popd"会将工作目录返回到原始位置。
放入批处理文件:
@echo off
rem setlocal EnableDelayedExpansion
set zDebug=0
if %zDebug% NEQ 0 echo ;[i] Execution started from {%cd%}
for %%A in ("c:temp","c:tempzTest-DeleteStuff","c:tempzTest-DeleteStuff.Android","c:tempzTest-DeleteStuffDoNotDeleteThis","c:tempzTest-DeleteStuffDoNotDeleteThis.OkDeleteThis","c:tempzTest-DeleteStuff.AndroidDir1","c:tempzTest-DeleteStuff.AndroidDir2","c:tempzTest-DeleteStuff.AndroidDir3","c:tempzTest-DeleteStuff.AndroidDir3.TriggerAlreadyDeletedClause") do (
if exist "%%~A" (
if %zDebug% NEQ 0 (echo ;[i] Directory Already Exists {"%%~A"})
) else (
mkdir "%%~A" && (if %zDebug% NEQ 0 echo ;[i] Directory Created {"%%~A"})
)
)
set "targetfolder=c:tempzTest-DeleteStuff"
if %zDebug% NEQ 0 echo ;[i] Changing Dir To Begin Removing .Directories {%targetfolder%}
pushd "%targetfolder%" 2>nul && (
for /f "tokens=*" %%A in ('dir /b /s /ad ".*"') do (
if exist "%%~A" (
rd /s /q "%%~A" >nul 2>&1 && (echo ;[i] Deleted {"%%~A"}) || (echo ;[e] Failed To Delete {"%%~A"})
) else (
echo ;[i] Already Deleted {"%%~A"}
)
)
) || (
echo ;[e] Failed To Change Directory To Target Folder {%targetfolder%}
)
goto :zEOF
:zExitEarly
echo ;[i] Exiting Early...
:zEOF
popd >nul 2>&1 || echo ;[i] Starting Directory No Longer Exists
exit /b
"zDebug=1"时的输出
;[i] Execution started from {C:}
;[i] Directory Already Exists {"c:temp"}
;[i] Directory Already Exists {"c:tempzTest-DeleteStuff"}
;[i] Directory Created {"c:tempzTest-DeleteStuff.Android"}
;[i] Directory Already Exists {"c:tempzTest-DeleteStuffDoNotDeleteThis"}
;[i] Directory Created {"c:tempzTest-DeleteStuffDoNotDeleteThis.OkDeleteThis"}
;[i] Directory Created {"c:tempzTest-DeleteStuff.AndroidDir1"}
;[i] Directory Created {"c:tempzTest-DeleteStuff.AndroidDir2"}
;[i] Directory Created {"c:tempzTest-DeleteStuff.AndroidDir3"}
;[i] Directory Created {"c:tempzTest-DeleteStuff.AndroidDir3.TriggerAlreadyDeletedClause"}
;[i] Changing Dir To Begin Removing .Directories {c:tempzTest-DeleteStuff}
;[i] Deleted {"c:tempzTest-DeleteStuff.Android"}
;[i] Already Deleted {"c:tempzTest-DeleteStuff.AndroidDir3.TriggerAlreadyDeletedClause"}
;[i] Deleted {"c:tempzTest-DeleteStuffDoNotDeleteThis.OkDeleteThis"}
"zDebug=0"时的输出
;[i] Deleted {"c:tempzTest-DeleteStuff.Android"}
;[i] Already Deleted {"c:tempzTest-DeleteStuff.AndroidDir3.TriggerAlreadyDeletedClause"}
;[i] Deleted {"c:tempzTest-DeleteStuffDoNotDeleteThis.OkDeleteThis"}