DIR 但 select 文件名的特定部分

DIR but select specific parts of file names

我多年来一直习惯使用这个非常简单方便的 .BAT 文件来创建一个简单的 TXT 目录中所有文件的文件:

dir *.* > LIST.TXT

但结果包含很多我不需要的信息

现在我在一个目录下有很多文件是这样的:

file 01 [shYddYJQIGfffY].xyz
second file 00008 [shYddYJQIfGf11dfzrffY].exe
filex [shGffY].sys
file that i don't need.txt
many other files that i don't need.bat

1/ 我可以将哪个命令行与 DIR(或其他任何命令)一起使用,以便在最终的 LIST.txt 文件中仅包含这些信息?只有 []

之间的值

预期结果:

shYddYJQIGfffY
shYddYJQIfGf11dfzrffY
shGffY

2/ 如何编辑 .BAT 文件以在每个结果之前添加字符串 MYRESULT,例如:

MYRESULT shYddYJQIGfffY
MYRESULT shYddYJQIfGf11dfzrffY
MYRESULT shGffY

使用 for 循环(参见 for /?):

for /f "tokens=2 delims=[]" %%a in ('dir /b *[*].*') do echo MYRESULT %%a

这个for /f循环每行取dir /b *[*].*的输出(过滤相关文件,b是格式),并将其分成三部分,先标记第一个[之前的部分,标记2[]之间的部分。之后是第三部分。您只需要第二个令牌。然后将字符串与提取的子字符串一起回显,完成。