2011-04-17 108 views
2

我有一个程序ABC,它当前接受一个文件并将n个文件转储到名称与没有扩展名的文件名相同的文件夹中。Windows批处理文件:使用循环回显目录中的所有文件

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

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

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

我第一次尝试呼应他们

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

其中%%〜NX是从程序ABC新创建的文件夹的名称,但它是所有回声的文件夹的“目录”,该名而而不是在它试图循环它之前评估(dir %%〜nX)。

此外,目录将包括父目录和当前目录,我不想要,如果我得到它的工作。我如何摆脱它们,是否有可能在循环播放之前评估命令?

回答

3

如果你看一下帮助你,当你运行FOR /?,你会看到,你要么想:

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

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

'dir/b %%〜nX'语法就是我正在寻找的。谢谢。 – MxyL 2011-04-17 02:51:59

1

试试这个链接 -

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

相反回声使用拷贝。

编辑:在这里,你去

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

这将从源目录中的所有* .xml文件复制到目标目录递归和扁平化的目录结构。

+0

我使用的回声来验证我的文件寻找是正确的。但是,是的,我应该使用/ R或/ F代替 – MxyL 2011-04-17 02:51:27

相关问题