windows - 在 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%
但我不知道如何跳过空文件夹,你能帮帮我吗?
解决方案
根据我的评论:
- use
dir
而不是for /r
which 没有选项可以跳过隐藏或系统文件/文件夹。 - 使用 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 模式下排除匹配的行和
"^\. \\\."
匹配行开头或反斜杠后的文字点。
推荐阅读
- python - 在用户不活动时执行功能
- api - 如何在 API Manager 的 API 中更新 API?
- c# - 如何使用 microsoft-graph 从共享点列表中获取字段列表?
- php - 无法使用php从前端添加用户
- typescript - 如何指定 Typescript 通用 T[K] 是数字类型?
- php - 将数组传递给 CodeIgniter 中的视图
- php - 对于返回客户隐藏或获取电子邮件以在 WooCommerce 结帐页面上添加“重复电子邮件地址”
- electron - Nautilus 无法识别电子可执行文件
- android - 有没有办法从 Android Studio 中的 SDK 更改覆盖方法参数名称?
- sql - 在 SQL / Laravel 中使用“LIKE”运算符比较两列