如何使用bat文件将文件从子目录移动到一个文件夹

how to use bat file to move files from subdirectories to one folder

我正在尝试使用 .bat 文件进入一个文件夹,拍摄其中及其子文件夹中的所有照片,然后将它们全部放入另一个目录中。我知道如何准确复制文件夹,使用

复制时所有子文件夹都保留在原位
@ECHO OFF
XCOPY E:\FromFolderNameX C:\toFolderNameY /m /y

但我只希望所有的照片最终都在一个文件夹中,没有子文件夹。这可以用批处理文件完成吗?

  • 我假设您想要 复制(而不是移动)从 移动 开始的子树中的照片=12=]进入目录C:\toFolderNameY.

  • 我假设 "photos" 你的意思是 .jpg 个文件。

  • 单行交互命令为

    for /r E:\FromFolderNameX %p in (*.jpg) do copy /y "%~p" C:\ToFolderNameY
    
  • 如果您想复制所有文件而不是 JPG 文件,只需将 *.jpg 替换为 *

  • 如果您想要一个批处理文件而不是交互式单行文件,则批处理文件的核心是

    for /r "%~1" %%p in (*.jpg) do copy "%%~p" "%~2"
    

%1 是第一个位置参数 = 您要从中复制文件的子树的顶部。%2 是第二个位置参数 = 目标目录。)

在生产中,批处理文件可能会检查目录 %1%2 是否存在并且确实是目录;它可能应该接受一个可选的第三个参数,给出要复制的文件的模式。

输入 for /? 以阅读有关 how for /r works 的更多信息。