批处理如何识别文件夹中的文本文件并存储它们的文件名?

问题描述:

我有一个名为newfolder的文件夹,里面有abc.txt和def.txt文件夹。如何使用批处理将文件名abc.txtdef.txt存储到%file1%和%file2%中? .cmd将位于与新文件夹相同的目录中。批处理如何识别文件夹中的文本文件并存储它们的文件名?

如果你希望只分配文本abc.txtdef.txt变量,使用:

set file1=abc.txt 
set file2=def.txt 

但我从您要通过文件来迭代你的问题承担。如果你明确地想要abc.txt是在可变file1def.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 
+0

在'('dir/b/s')'中,dir,/ b,/ s是什么意思?如果我想包含目标文件夹 ,它是以这种方式放置的吗?('dir/b/s newfolder “)'? – KenyKeny

+0

'/ s'包含子目录,'/ b'告诉它使用裸格式。是的,你可以添加一个目标文件夹。此代码示例是针对批处理文件与文本文件位于同一文件夹中的说明进行的。如果没有,你可以设置路径为'('dir/b/s C:\ Path \ To \ The \ Folder \')' – UnknownOctopus

+0

你给了很多选项,我没有理由不选择你。 在此先感谢。 – KenyKeny

set file1=abc.txt 
set file2=def.txt 
+1

向您的答案添加一些解释将使其更好。 – NathanOliver