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

时间:2014-03-17 15:29:32

标签: windows batch-file command-prompt

我需要设置一个批处理文件,该文件将使用批处理文件从预设目录复制文件,将多个图层复制到当前目录中的文件夹中。

文件结构看起来像这样,

  
    

AAA
    --0001
    ----纹理
    ------ file1.tga
    ------ file2.tga
    ------ file3.tga
    --0002
    ----材料......
    --0003
    ----纹理...
    --0004
    ----剧本......等     --0005 ...
    --0006 ...
    BBB
    --0001 ......等
    ---纹理......等     CCC ......
    DDD ......等

  

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

  
    

AAA
    --textures
    --materials
    --models
    --scripts

  

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

  
    

for / d %% a in(&#39; dir / b。\ AAA * \ textures&#39;)复制&#34; %% a&#34; &#34; \ AAA&#34;

  

而通配符将介于AAA&#39;之间。和&#39;纹理&#39;文件夹。这同样适用于所有其他第二代子文件夹。

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

  
    

for / d %% a in(0001)do copy&#34; %% a&#34; &#34;&#34;

  

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

任何帮助都会受到极大的评价。

1 个答案:

答案 0 :(得分:1)

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

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