我试图编写一个批处理文件以在当前目录的所有子文件夹中递归执行一系列操作,但是我需要跳过隐藏的文件夹,我从这里开始:
echo off
set back=%cd%
for /r "C:\Temp\" %%i in (.) do (
cd "%%i"
echo 'Current directory:'
echo %%i
dir
cd ..
pause
)
cd %back%
但是我不知道如何跳过空文件夹,您能帮我吗?
答案 0 :(得分:1)
根据我的评论:
dir
代替for /r
,后者没有选择跳过“隐藏”或“系统”文件/文件夹。 @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模式下排除匹配的行,并且
"^\. \\\."
与行首或反斜杠后的文字点匹配。