在Windows bat文件中循环跳过隐藏的文件夹

时间:2019-04-16 11:48:53

标签: windows batch-file

我试图编写一个批处理文件以在当前目录的所有子文件夹中递归执行一系列操作,但是我需要跳过隐藏的文件夹,我从这里开始:

echo off
set back=%cd%

for /r "C:\Temp\" %%i in (.) do (
cd "%%i"

echo 'Current directory:'
echo %%i
dir
cd ..
pause
)
cd %back%

但是我不知道如何跳过空文件夹,您能帮我吗?

1 个答案:

答案 0 :(得分:1)

根据我的评论:

  • 使用dir代替for /r,后者没有选择跳过“隐藏”或“系统”文件/文件夹。
  • 使用PushD / PopD更改目录并跳回
  • 跳过文件夹管道查找/ findstr / V

@echo off
for /f "delims=" %%i in ('
  dir /B /S /AD-H-S "C:\temp\" 2^>Nul ^| findstr /V "^\. \\\."
') do (
    PushD "%%i"
    echo 'Current directory:'
    cd
    dir
    PopD
    pause
)

此处findstr /V "^\. \\\."使用/V在默认RegEx模式下排除匹配的行,并且

"^\. \\\."与行首或反斜杠后的文字点匹配。