批处理如何识别文件夹中的文本文件并存储它们的文件名?
问题描述:
我有一个名为newfolder
的文件夹,里面有abc.txt和def.txt文件夹。如何使用批处理将文件名abc.txt
和def.txt
存储到%file1%和%file2%中? .cmd将位于与新文件夹相同的目录中。批处理如何识别文件夹中的文本文件并存储它们的文件名?
答
如果你希望只分配文本abc.txt
和def.txt
变量,使用:
set file1=abc.txt
set file2=def.txt
但我从您要通过文件来迭代你的问题承担。如果你明确地想要abc.txt
是在可变file1
和def.txt
是在file2
使用:
@echo off
for %%f in (*) do (
if %%f==abc.txt set file1=abc.txt
if %%f==def.txt set file2=file.txt
) else (
rem process other files
)
如果你只是想将文件夹中的每个文本文件分配给一个变量,我建议设置一个计数器,并使用要设置文件变量:
@echo off
setlocal EnableDelayedExpansion
set num=0
for /f %%f in ('dir /b /s') do (
set /a num+=1
set file!num!=%%f
)
rem now process it as you wish. example:
echo !file1!
echo !file2!
echo !file3!
echo !file4!
echo !file5!
echo !file6!
pause
在'('dir/b/s')'中,dir,/ b,/ s是什么意思?如果我想包含目标文件夹 ,它是以这种方式放置的吗?('dir/b/s newfolder “)'? – KenyKeny
'/ s'包含子目录,'/ b'告诉它使用裸格式。是的,你可以添加一个目标文件夹。此代码示例是针对批处理文件与文本文件位于同一文件夹中的说明进行的。如果没有,你可以设置路径为'('dir/b/s C:\ Path \ To \ The \ Folder \')' – UnknownOctopus
你给了很多选项,我没有理由不选择你。 在此先感谢。 – KenyKeny