Windows 命令获取文件扩展名列表

Windows command to get list of file extensions

我需要一个命令来获取文件夹中不同的扩展文件以及每个扩展的出现次数。

那我该怎么做呢?

您可以像这样使用 PowerShell 一行代码来完成此操作:

powershell "$ext = @{}; gci *.* | %{ $ext[$_.Extension]++ }; $ext"

如果在 .bat 脚本中使用它,请加倍 % 符号。


在纯批处理中,这是我能想到的最简单的方法:

@echo off & setlocal

for %%I in (*.*) do (
    set /a ext[%%~xI] += 1
)

set ext[

或压缩成一行(仍在 .bat 脚本中):

@setlocal & @(for %%I in (*.*) do @set /a ext[%%~xI] += 1) & set ext[

或直接从 cmd 控制台:

cmd /c ">NUL (@for %I in (*) do @set /a ext[%~xI] += 1) & set ext["

(那里的 cmd /c 的行为类似于 bat 脚本中的 setlocal,帮助您避免无用的变量破坏您的环境。)

这是来自 superuser.com 的解决方案。将此代码保存在 .bat 文件中。

@echo off

set target=%~1
if "%target%"=="" set target=%cd%

setlocal EnableDelayedExpansion

set LF=^


rem Previous two lines deliberately left blank for LF to work.

for /f "tokens=*" %%i in ('dir /b /s /a:-d "%target%"') do (
    set ext=%%~xi
    if "!ext!"=="" set ext=FileWithNoExtension
    echo !extlist! | find "!ext!:" > nul
    if not !ERRORLEVEL! == 0 set extlist=!extlist!!ext!:
)

echo %extlist::=!LF!%

endlocal