如何在批处理文件中使用目录通配符移动或复制文件夹



我需要设置一个批处理文件,它将从预设目录中复制文件,向下几层,使用批处理文件组织到当前目录中的一个文件夹中。

文件结构看起来像这样,

3
——0001
——纹理
——file1.tga
——file2.tga
——file3.tga
——0002
——材料…
——0003
——纹理…
——0004
——脚本…等
——0005…
——0006…
BBB
——0001…等
——材质……等
CCC…
DDD……等

我想将每个纹理,材料,模型(等)文件夹移动到父项目下面的单个文件夹中(例如:AAA),以便文件夹结构看起来像这样,所有子文件都是完整的,

3
——纹理
——材料
——模型
——脚本

我一直在尝试使用类似于此的代码,但尚未成功,

/d % %的("dir/b AAA * 纹理。")做副本"% %"。 AAA"

而通配符会在'AAA'和'textures'文件夹之间。这同样适用于所有其他第二代子文件夹。

我刚刚尝试了另一个版本的命令,它移动了文件,但没有移动文件夹。我从"AAA"文件夹中启动批处理文件。

for/d %%a in (0001) do copy "%%a"。"

我认为问题是不知道如何正确地将目录通配符输入到"for"命令中,这可能是一个非常简单的修复。

任何帮助都将非常感激。

将此代码放入.bat文件中,并在AAA目录下运行

for /f "tokens=*" %%a in ('dir /b') do robocopy %%a . /s /move
  • for /f "tokens=*"表示将处理'dir /b'返回的所有值
  • dir b将以裸格式列出目录
  • robocopy是主命令,它将执行复制工作。
  • %%a是包含迭代子文件夹名称{0001textures, 0002materials,…}的变量
  • 目的地.表示复制到工作目录,在我们的例子中是AAA
  • 选项/s搜索子目录
  • 选项/move移动而不是复制

最新更新