如何在以点开头的窗口命令中显示文件夹


  1. 我的操作系统是视窗 7;
  2. 以 dot(.( 开头的文件夹是隐藏文件夹;
  3. 在我的目标文件夹中有几个子文件夹,如.android,.cache等。
  4. 我想要的是找到所有文件夹,然后删除它们及其内容。
  5. 我所做的是在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"}

最新更新