用于从多个目录

时间:2016-07-29 04:30:26

标签: batch-file xcopy

我之前搜索过我的问题的答案,但是到目前为止还没有具体回答。请参阅:Using xcopy to copy files from several directories to one directoryBatch file to copy files from one folder to another folder

在一个目录(Data)中,我专门命名了多个目录,例如(SIAE02203)包含通常命名的.JPEG文件(plot.jpeg)。我希望创建一个能够遍历每个目录的批处理文件,找到,复制并重命名plot.jpeg文件和父文件夹名称。

因此plot.jpeg变为SIAE02203-plot.jpeg

目录的结构如下:Data\SIAE02203\plots\plot.jpeg。 我希望将重命名的文件复制到Data\Output

这有可能吗?

1 个答案:

答案 0 :(得分:2)

以下是此任务的简短批处理代码:

@echo off
pushd "C:\Temp\Data"
if not exist "Output\*" md Output
for /D %%D in (*) do (
    if /I not "%%D" == "Output" (
        for %%J in ("%%D\plots\*.jpeg") do (
            copy /B /Y "%%~fJ" "Output\%%D-%%~nxJ" >nul
        )
    )
)
popd

在第二行指定目录Data的路径。

批处理文件首先创建目录Output(如果尚未存在)。

下一个命令 FOR 用于在目录Data的每个子目录上处理更多命令。使用 IF 条件跳过子目录Output

内部 FOR 搜索plots子目录SIAE02203\plots中外部 FOR 找到的每个子目录,用于*.jpeg个文件和副本所有找到的JPEG文件到目录Output

命令 COPY 的成功消息被重定向到设备 NUL 以禁止它。

目录C:\Temp\Data的输入示例结构:

  • SIAE02203
    • 曲线
      • 备份
        • backup_plot.jpeg
      • image.jpg的
      • plot.jpeg
    • 图片
      • image.jpg的
      • plot.jpeg
    • photo.jpeg
  • TIAE03208
    • 曲线
      • another.jpeg
      • ignored.jpg
      • plot.jpeg

批处理执行后C:\Temp\Data的内容:

  • <强>输出

    • SIAE02203-plot.jpeg
    • TIAE03208-another.jpeg
    • TIAE03208-plot.jpeg
  • <强> SIAE02203

    • 曲线
      • 备份
        • backup_plot.jpeg
      • image.jpg的
      • plot.jpeg
    • 图片
      • image.jpg的
      • plot.jpeg
    • photo.jpeg
  • TIAE03208
    • 曲线
      • another.jpeg
      • ignored.jpg
      • plot.jpeg

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • copy /?
  • echo /?
  • for /?
  • if /?
  • popd /?
  • pushd /?

有关>nul的解释,请参阅Microsoft文章Using command redirection operators