将文件从父文件夹移动到子文件夹

将文件从父文件夹移动到子文件夹

我正在尝试通过批处理文件修复以下问题。

test是一个父文件夹,其中包含进一步的子文件夹test1、、test2test3所有这些子文件夹test1、、test2test3包含一些.docx文件和进一步的子文件夹存档。

  • 在子文件夹、、中查找现有.docx文件。test1test2test3
  • 将它们复制到名为 的所需文件夹中destination

以下代码对于问题的第一部分来说工作正常:

for /R "C:\test" %%f in (*.docx) do xcopy %%f "C:\Users\%USERNAME%\Desktop\destination\"  /exclude:c:\test\not_required.txt

现在我想将.docx文件从子文件夹test1test2移动test3到其各自的子文件夹存档。到目前为止,我只能为问题的第二部分构建以下代码。

for /d /r "c:\test" %%a in (*) do (
if /i "%%~nxa"=="archiv" set "folderpath=%%a"
move "C:\test\test1\test1.docx" "%folderpath%" 
)

如您所见,我已为源文件提供了静态文件移动C:\test\test1\test1.docx。我不确定如何在循环内使用更多变量,不幸的是,它无法按预期工作。非常感谢一些专家的建议。

答案1

您的方法的问题在于For /R也会深入到存档文件夹,因此必须避免这种情况。

如果您的文件夹结构没有不同的深度,您可以使用带通配符的 for /d 来仅获取直接子文件夹C:\test

以此示例情况为例:

> tree /F
C:\
├───Test
│   ├───test1
│   │   │   Example_8192.docx
│   │   │   Example_32457.docx
│   │   │
│   │   └───archive
│   ├───test2
│   │   │   Example_14218.docx
│   │   │   Example_20916.docx
│   │   │
│   │   └───archive
│   └───test3
│       │   Example_12174.docx
│       │   Example_9168.docx
│       │
│       └───archive
└───Users
    └───UserName
        └───Desktop
            └───Destination

此批次使用变量修饰符

:: C:\Copy+Archive.cmd
@Echo off
For /D %%D in ("C:\test\*") do (
    Echo Processing %%D
    For %%F in ("%%~fD\*.docx") do (
        Echo Copying "%%~fF" "C:\Users\%USERNAME%\Desktop\Destination\"
        xcopy "%%~fF" "C:\Users\%USERNAME%\Desktop\Destination\" >Nul && (
        Echo Moving  "%%~fF" "%%~dpFarchive\"
        Move  "%%~fF" "%%~dpFarchive\" >Nul
        )
    )
)

将产生此结果

> tree /f
C:\
│   Copy+Archive.cmd
├───Test
│   ├───test1
│   │   └───archive
│   │           Example_8192.docx
│   │           Example_32457.docx
│   │
│   ├───test2
│   │   └───archive
│   │           Example_14218.docx
│   │           Example_20916.docx
│   │
│   └───test3
│       └───archive
│               Example_12174.docx
│               Example_9168.docx
└───Users
    └───UserName
        └───Desktop
            └───Destination
                    Example_8192.docx
                    Example_32457.docx
                    Example_14218.docx
                    Example_20916.docx
                    Example_12174.docx
                    Example_9168.docx

相关内容