批量列出特定目录中的所有文件扩展名

Batch list all file extension in a specific directory

使用 windows 批处理文件,我试图回显文件夹中的文件扩展名列表。 然后将其设置为 %var% 并输出到 .txt 文件

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

来自这个post

我的最终目标是我希望它像这样输出

文件夹内容:

sample1.jpg
sample2.jpg
sample3.jpg
sample4.mp4
sample5.mp4
sample6.png
sample7.zip
sample8.zip

结果:

.jpg, .mp4, .png, .zip

非常感谢任何帮助,希望我解释得足够清楚

您已经为每个扩展定义了一个变量。只需使用另一个 for /f 循环来连接它们的相关部分(实际扩展):

@echo off
setlocal enabledelayedexpansion

for %%I in (*) do @set /a ext[%%~xI] += 1 
for /f "tokens=2 delims=[]" %%a in ('set ext[') do set "var=%%a, !var!"
echo %var:~0,-2%
@setlocal ENABLEDELAYEDEXPANSION&@(for %%I in (*.*) do @set /a ext[%%~xI] += 1&IF DEFINED ext[all]  (IF "!ext[all]!" equ "!ext[all]: %%~xI=!" SET "ext[all]=!ext[all]!, %%~xI") ELSE (SET "ext[all]= %%~xI"))&SET "ext[all]=!ext[all]:~1!"&set ext[

为什么你想把这一切都放在一条线上,我不知道。

由于需要在循环中访问变量的更改值,因此需要delayedexpansion。请注意,每次发现新扩展名时都会附加 Space.ext,因此在列表变量的开头会有一个额外的 space - 因此要求在显示结果之前删除第一个字符。