首页 > 解决方案 > 在 Windows bat 文件中循环跳过隐藏文件夹

问题描述

我正在尝试编写一个批处理文件以在当前目录的所有子文件夹中递归地执行一个动作块,但我需要跳过隐藏文件夹,我已经开始这样做了:

echo off
set back=%cd%

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

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

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

标签: windowsbatch-file

解决方案


根据我的评论:

  • usedir而不是for /rwhich 没有选项可以跳过隐藏或系统文件/文件夹。
  • 使用 PushD/PopD 更改目录并跳回
  • 跳过文件夹管道到 find/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 模式下排除匹配的行和

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


推荐阅读