如何将文件从具有特定扩展名的子文件夹移动到不同的子文件夹

How to move files from subfolders with certain extension to different subfolder

我在 .\[date]\jpg 等文件夹中有数万个 .jpg,例如:

.18_03_01\jpg
.18_03_02\jpg

...等等。

我需要将它们向后移动一步,即

.18_03_01\jpg\*.jpg

...至

.18_03_01\*.jpg

...等等。

所有这些以日期命名的文件夹都不包含 jpg 子文件夹,这些情况应该处理。

我想这可以用 XCopy 或传统的 .bat 批处理来完成,但是怎么做呢?

命令 XCOPY 用于 复制 文件和整个目录,而不用于 移动 文件.

解决方案是在命令提示符 window 中使用 FOR 循环。不需要批处理文件。

在包含子目录 2018_03_012018_03_02 以及 运行 的目录中打开命令提示符 window,命令行如下:

@for /D %I in (*) do @if exist "%I\jpg\*.jpg" echo Move files from %I\jpg ... & move "%I\jpg\*.jpg" "%I\" & rd "%I\jpg"

FOR 命令行处理当前目录中的每个非隐藏子目录。

对于每个子目录,执行 IF 条件以检查当前日期子目录的子目录 jpg 中是否存在任何 *.jpg 文件。

在 true 条件下,首先会输出一条带有 ECHO 的信息,告诉您接下来会发生什么。然后执行命令 MOVE 将 JPEG 文件从子目录 jpg 移动到目录层次结构的上一级,并执行最后一个命令 RD删除子目录 jpg,如果它现在是空的。

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

  • echo /?
  • for /?
  • if /?
  • move /?
  • rd /?

另请参阅 Single line with multiple commands,了解在命令行中使用两次的 & 的解释。