批量列出特定目录中的所有文件扩展名
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 - 因此要求在显示结果之前删除第一个字符。
使用 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 - 因此要求在显示结果之前删除第一个字符。