【问题标题】:Windows batch files: echo all files in a directory with a loopWindows批处理文件:使用循环回显目录中的所有文件
【发布时间】:2011-08-07 03:34:29
【问题描述】:

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

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

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

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

我首先尝试回应他们

对于 /D %%Y in (dir %%~nX) 做 回显 %%Y )

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

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

【问题讨论】:

    标签: batch-file windows-vista


    【解决方案1】:

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

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

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

    【讨论】:

    • 'dir /b %%~nX' 语法是我正在寻找的。谢谢。
    【解决方案2】:

    试试这个链接 -

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

    代替 echo 使用副本。

    编辑:给你

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

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

    【讨论】:

    • 我使用 echo 来验证我要查找的文件是否正确。但是,是的,我应该改用 /R 或 /F
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2012-07-27
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多