【问题标题】:How to Move or Copy Folders using directory Wildcards within Batch File?如何使用批处理文件中的目录通配符移动或复制文件夹?
【发布时间】:2014-04-22 21:37:10
【问题描述】:

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

文件结构看起来像这样,

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

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

AAA
--纹理
--材料
--models
--脚本

我一直在尝试使用类似这样的代码,目前还没有成功,

for /d %%a in ('dir /b .\AAA*\textures') 复制 "%%a" ".\AAA"

而通配符将位于“AAA”和“纹理”文件夹之间。这同样适用于所有其他第 2 代子文件夹。

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

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

我认为问题在于不知道如何将目录通配符正确输入到“for”命令中,这可能是一个非常简单的解决方法。

任何帮助将不胜感激。

【问题讨论】:

  • 我建议你用robocopy替换copy,它有更多的功能:technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx,它从Win 7开始就可用
  • 所以移动文件夹的是robocopy,而不是copy。虽然我倾向于询问 /f "tokens=*" - 它有什么作用?
  • 没关系。刚研究了一下。谢谢!

标签: windows batch-file command-prompt


【解决方案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\textures, 0002\materials, ...}
  • destination . 表示复制到工作目录,在我们的例子中是 AAA
  • 选项/s搜索子目录
  • 选项/move移动而不是复制

【讨论】:

  • 太漂亮了!这正是我需要它做的。 (虽然我不明白怎么做。)我需要做什么才能将它运行一个级别? (在我的 AAA 文件夹之外?)
  • 另外,附加 /move 而不是 /mov 可以为我处理大部分清理工作。
猜你喜欢
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2013-09-04
  • 2013-10-18
  • 2013-11-17
相关资源
最近更新 更多