You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让CMD显示正在扫描的文件夹?附多媒体文件搜索批处理代码

解决方案:让CMD实时显示正在扫描的文件夹

没问题!要实现实时显示当前扫描的文件夹,我们需要调整原来的批处理逻辑——原来用dir /s是一次性递归搜索,没法中途输出文件夹路径;换成for /r循环逐个遍历文件夹,就能在进入每个符合条件的文件夹时输出路径,同时保留你的排除规则。

下面提供两种修改方案,你可以根据自己的偏好选择:


方案1:统一遍历文件夹,同时搜索所有扩展名

这个方案会先遍历每个文件夹,检查是否需要排除,然后在该文件夹里一次性搜索所有多媒体格式,实时显示当前扫描的文件夹:

@echo off
setlocal enabledelayedexpansion
cd /d C:\

:: 显示排除规则说明
echo ______________________________________________________________________________________________________________________
echo.
echo This batch file will search for multimedia files in Drive C: but will exclude the folders with the following keywords:
echo.
echo 1. microsoft
echo 2. windows
echo 3. cisco
echo 4. landesk
echo 5. adobe
echo ______________________________________________________________________________________________________________________
echo.
echo.

:: 初始化输出文件(清空原有内容)
echo File List > output1.csv

:: 定义要排除的关键词(用|分隔,方便findstr批量匹配)
set "exclude_keywords=microsoft|windows|cisco|landesk|adobe"

:: 定义需要搜索的多媒体扩展名
set "target_extensions=mp3 mp4 jpg png mkv"

:: 递归遍历C盘下的所有文件夹
for /r %%d in (.) do (
    :: 获取当前文件夹的完整绝对路径
    set "current_folder=%%~fd"
    
    :: 检查当前文件夹是否包含排除关键词(不区分大小写)
    echo !current_folder! | findstr /i /c:"%exclude_keywords%" >nul
    if errorlevel 1 (
        :: 如果文件夹不需要排除,实时显示正在扫描的路径
        echo Scanning: !current_folder!
        
        :: 在当前文件夹下搜索所有目标扩展名的文件,追加到输出CSV
        for %%e in (%target_extensions%) do (
            dir /b "!current_folder!\*.%%e" >> output1.csv
        )
    )
)

echo.
echo Done Searching...
Pause
endlocal

方案2:按扩展名分组搜索(保留原提示风格)

如果你想保留原来的“Searching for MP3...”这类提示,同时显示每个扩展名对应的扫描文件夹,可以用子过程把重复逻辑抽出来,结构更清晰:

@echo off
setlocal enabledelayedexpansion
cd /d C:\

:: 显示排除规则说明
echo ______________________________________________________________________________________________________________________
echo.
echo This batch file will search for multimedia files in Drive C: but will exclude the folders with the following keywords:
echo.
echo 1. microsoft
echo 2. windows
echo 3. cisco
echo 4. landesk
echo 5. adobe
echo ______________________________________________________________________________________________________________________
echo.
echo.

:: 初始化输出文件
echo File List > output1.csv

:: 定义要排除的关键词
set "exclude_keywords=microsoft|windows|cisco|landesk|adobe"

:: 逐个处理每种多媒体格式
echo Searching for MP3...
call :scan_for_extension "mp3"

echo Searching for MP4...
call :scan_for_extension "mp4"

echo Searching for JPG...
call :scan_for_extension "jpg"

echo Searching for PNG...
call :scan_for_extension "png"

echo Searching for MKV...
call :scan_for_extension "mkv"

echo.
echo Done Searching...
Pause
endlocal

:: 子过程:搜索指定扩展名的文件,同时显示扫描路径
:scan_for_extension
set "ext=%~1"
for /r %%d in (.) do (
    set "current_folder=%%~fd"
    :: 检查是否排除当前文件夹
    echo !current_folder! | findstr /i /c:"%exclude_keywords%" >nul
    if errorlevel 1 (
        echo Scanning for .%ext%: !current_folder!
        dir /b "!current_folder!\*.%ext%" >> output1.csv
    )
)
goto :eof

关键逻辑说明

  1. 延迟扩展(enabledelayedexpansion:因为在for循环中需要动态读取和更新变量(比如current_folder),必须启用延迟扩展,用!变量名!来读取循环中的实时值。
  2. 文件夹排除检查:通过findstr /i不区分大小写检查文件夹路径是否包含排除关键词,errorlevel 1表示未匹配到(即文件夹不需要排除)。
  3. 实时路径输出:每次进入符合条件的文件夹时,用echo输出当前路径,让用户清楚程序的运行状态。

内容的提问来源于stack exchange,提问作者7thGen

火山引擎 最新活动