Windows批处理文件:使用循环回显目录中的所有文件

时间:2011-04-17 01:43:34

标签: batch-file windows-vista

我有一个程序ABC,它当前接收一个文件并将n个文件转储到一个文件夹中,该文件夹的名称与没有扩展名的文件名相同。

创建的文件数是任意的。我想获取所有这些输出文件并将它们移动到另一个目录。这意味着当我将10个文件传递给程序ABC时,我将输出全部放在一个目录中,而不是10个单独的目录。

我将使用嵌套的for循环来完成此任务。外部循环将发送每个参数由程序ABC处理,内部循环将每个和所有结果文件移动到我自己选择的文件夹中。

我已经完成了外部循环部分,但我不确定如何检索文件夹中的文件列表。

我首先尝试回应他们

for /D %%Y in (dir %%~nX) do
  echo %%Y
)

其中%% ~nX是程序ABC中新创建的文件夹的名称,但它所做的只是回显“dir”和文件夹的名称而不是在尝试循环之前评估(dir %% ~nX)在它上面。

此外,dir将包括父目录和当前目录,如果我让它工作,我不想要。如何摆脱它们,是否可以在循环之前评估命令?

2 个答案:

答案 0 :(得分:3)

如果您查看运行FOR /?时获得的帮助,您会看到要么:

for /D %%Y in (%%~nX\*) do

for /F %%Y in ('dir /b %%~nX') do

答案 1 :(得分:1)

试试此链接 -

http://rosettacode.org/wiki/Walk_a_directory/Recursively#Batch_File

而是使用回复。

编辑:你走了

FOR /R <source-directory> %F IN (*.xml) DO COPY "%F" <destination-directory>

这将递归地将所有* .xml文件从source-directory复制到目标目录,并将目录结构展平。